我是Kotlin编程新手。
我创建了一个maven自动化项目 TestNG
. 我使用测试注解作为@ Test(invocationCount = 4)
重复相同的测试4次。我用的是 TimeUnit.SECONDS.sleep(30)
代码停止我的测试大约30秒。但这对我来说并不像预期的那样有效。因此,我计划编写一个循环,在数据库中更新订单状态时运行测试。
当我运行get api调用时,它返回一个 JSON
响应主体如下
{
"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"
}
在上面的json响应中,当存储过程触发时,orderstatus每30秒更新一次。orderstatus更新如下
授权在30秒内完成
在第二个30秒内完成
决定在最后30秒内交货。
所以我的问题是,我想编写一个循环,不断检查数据库状态,当orderstatus从authorized变为implementing时,getapi应该再次运行。当orderstatus在30秒后再次更改时,getapi应该再次从满足运行到解决。
请找到下面的代码,请让我知道哪里可以添加for或while循环。
代码:
@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)
}
在此处输入图像描述
有人能帮我吗?拜托。。。。。。。。。。。。。。。。。。。。。。。。。。。。告诉我怎么做就行了。
我在谷歌上搜索,找到了等待的方法。有谁能告诉我这是不是正确的方法。
暂无答案!
目前还没有任何答案,快来回答吧!