数据库列状态更新时如何写循环

问题描述

我是 Kotlin 编程的新手。

我使用 Rest Assured 和 Test(invocationCount = 4) 创建了一个 Maven 自动化项目。 我使用测试注释作为 @TimeUnit.SECONDS.sleep(30) 重复相同的测试 4 次。我使用 JSON 代码停止我的测试大约 30 秒。但它并不像预期的那样对我有用。所以我计划编写一个循环,当订单状态在数据库中更新时运行我的测试。

当我运行 Get API 调用时,它返回一个 { "id": 13,"orderNo": "87748","isverificationrequired": false,"paymentMethodType": "CreditCard","paymentMethod": { "paymentstatus": "Verificationrequired","dateLastUsed": 1608848423000,"dateCreated": 1608848177000,"dateUpdated": 1608848423000 },"invoice": { "Invoicestatus": "Completed","dateCreated": 1608848180000 },"dateCreated": 1608848180000,"dateUpdated": 1608848266000,"orderstatus": "Authorized" } 响应正文,如下所示

@Test(invocationCount = 4)
fun GetorderByID() {
        RestAssured.baseURI = baseQAURL
        //Test the Create Order POST API
        val response = RestAssured.given()
                .log()
                .all()
                .contentType(ordercontentType)
                .`when`()
                .get("/orders/13")
                .then()
                .log()
                .all().extract().response().thenReturn()
        assertEquals(response.statusCode,200)
        if (response.statusCode == 200) {
            //connect to db and run query
            var database = DbConnection()
            var con = database.connection()
            var statement = con?.createStatement()
            val query = CreateOrderQuery + JsonIncommOrderID.toString()
            val sqlqueryResult = statement?.executeQuery(query)
            //if condition to check the sqlqueryResult is not null
            if (sqlqueryResult != null) while (sqlqueryResult.next()) {
                DBOrderStatus = sqlqueryResult.getString("status")
            }
            // Read json response body and store the required value in a variable.
            val createOrderIcSB: StringBuilder = StringBuilder(response.getBody().asstring())
            val createOrderIcJsonObj: JsonObject = parser.parse(createOrderIcSB) as JsonObject
            JsonorderStatus = createOrderIcJsonObj.string("status").toString()
            assertEquals(JsonorderStatus,DBOrderStatus)
        }
        TimeUnit.SECONDS.sleep(30)
    }

在上述 JSON 响应中,当存储过程触发时,订单状态每 30 秒更新一次。订单状态更新如下

  1. 授权在前 30 秒内完成
  2. 在第二个 30 秒内完成并完成
  3. 在过去 30 秒内稳定到已交付。

所以我的问题是,我想编写一个循环来不断检查数据库状态,当订单状态从授权更改为完成时,Get API 应该再次运行第二次。当订单状态在 30 秒后再次发生变化时,Get API 应该会再次从 Fulfilling 运行到 Settled。

请找到下面的代码,并告诉我在哪里可以添加 For 或 While 循环。

代码

200

enter image description here

有人可以帮我吗?请....................... 请给我一个我该怎么做的想法。

我在谷歌上搜索并找到了 Awaitility 方法。任何人都可以指导我这是正确的方法与否。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)