当您使用RestAssured发出休息请求时,它似乎在等待响应。我需要在RestAssured中发出POST请求,然后在等待响应时,我需要发出GET请求。我正在使用Java和RestAssured。我也试过创建第二个线程,但它仍然没有工作。这是出于测试目的。
这是等待的地方:
given().auth().preemptive().basic(userCreds[0], userCreds[1]).contentType("application/json;").and().post(baseURL + resourcePath + this.act.getId() + "/run");
我希望在前一个请求运行时运行(异步请求?):
given().auth().preemptive().basic(userCreds[0], userCreds[1]).when().get(baseURL + resourcePath + this.connect.getId() + "/outgoing/" + fileId);
我还读到RestAssured支持异步请求,但是我没有成功地让它工作。我的项目是少年的。我只是一个低级QA人,所以任何帮助都会非常感激。
答案 0 :(得分:0)
RestAssured仅支持并行运行,而不支持asyncron运行。
答案 1 :(得分:0)
如果我正确理解您的问题,您应该能够使用线程执行您计划执行的操作。
ExecutorService executorService = Executors.newFixedThreadPool(<number of threads>);
// send 1st 7 requests here
for (int i = 0; i < 7; i++){
executorService.execute(new Runnable() {
@Override
public void run(){
try {
given().
contentType(<>).
header(<headers>).
body(body).
when().
post(<URL>);
} catch (Exception e) {
LOGGER.error(e);
}
}
});
}
// Wait for all the threads to gracefully shutdown
try {
executorService.awaitTermination(<Your timeout>);
} catch (InterruptedException ie) {
LOGGER.error("Shutdown interrupted. Will try to shutdown again.", ie);
executorService.shutdownNow();
}
虽然这不是异步的,但这可以做你打算做的事情。
答案 2 :(得分:0)
正如您提到的,您正在使用TestMG,因此请在单独的测试方法中编写两个请求,然后使用XML并行运行测试。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="TestSuite" thread-count="3" parallel="methods" >
<test name="testGuru">
<classes>
<class name="Test_class_name">
</class>
</classes>
</test>
</suite>
答案 3 :(得分:0)
Completable Future可用于使呼叫异步。