Automated tests 如何在TestNG中的测试之间共享变量?
我有一个测试登录类,它对登录有正面和负面的测试。响应中的肯定案例-接收令牌的结果 另外,我还有另一个功能类,它对一些功能进行了测试,可供登录用户使用 如何从肯定登录测试到功能测试获取令牌 我只找到了一个解决方案:Automated tests 如何在TestNG中的测试之间共享变量?,automated-tests,testng,rest-assured,Automated Tests,Testng,Rest Assured,我有一个测试登录类,它对登录有正面和负面的测试。响应中的肯定案例-接收令牌的结果 另外,我还有另一个功能类,它对一些功能进行了测试,可供登录用户使用 如何从肯定登录测试到功能测试获取令牌 我只找到了一个解决方案: 在登录类中创建静态变量标记 在肯定的登录测试之后,令牌变量应该是response的init 在所有功能测试中,应添加对登录肯定测试的依赖性 但似乎向所有功能测试添加依赖项不是一个好主意。 还有其他选择吗?可能的解决方案是将登录功能移动到一个单独的位置,并在登录和功能测试中重用它。例
- 在登录类中创建静态变量标记
- 在肯定的登录测试之后,令牌变量应该是response的init
- 在所有功能测试中,应添加对登录肯定测试的依赖性
还有其他选择吗?可能的解决方案是将登录功能移动到一个单独的位置,并在登录和功能测试中重用它。例如,您可以在功能测试之前使用TestNG在注释之前提取标记
class RequestHelper {
public static io.restassured.Response login(String username, String password) {
Response response;
//some code to get login response
return response;
}
}
class LoginTest {
@Test
public void shouldLogin() {
Response loginResponse = RequestHelper.login("username", "password");
//assertions that response is valid
}
}
class FunctionalTest {
private String token;
@BeforeClass
public void getToken(){
Response response = RequestHelper.login("username", "password");
//Extracting token from response here (depends on how token is returned)
token = response.then().extract().jsonPath().getString("token");
}
@Test
public void functionalTest(){
//Use token here
}
}
同样,进行功能测试取决于登录测试的成功,这也是一个好主意。这样,如果登录测试失败,将不会执行功能测试。可能的解决方案是将登录功能移动到单独的位置,并在登录测试和功能测试中重复使用。例如,您可以在功能测试之前使用TestNG在注释之前提取标记
class RequestHelper {
public static io.restassured.Response login(String username, String password) {
Response response;
//some code to get login response
return response;
}
}
class LoginTest {
@Test
public void shouldLogin() {
Response loginResponse = RequestHelper.login("username", "password");
//assertions that response is valid
}
}
class FunctionalTest {
private String token;
@BeforeClass
public void getToken(){
Response response = RequestHelper.login("username", "password");
//Extracting token from response here (depends on how token is returned)
token = response.then().extract().jsonPath().getString("token");
}
@Test
public void functionalTest(){
//Use token here
}
}
同样,进行功能测试取决于登录测试的成功,这也是一个好主意。这样,如果登录测试失败,将不会执行功能测试。我们可以使用TestNG的
ITestContext
例如:
在测试课上
ctx.setAttribute("TOKEN", token);
在另一个班级进行同样的测试
String token = ctx.getAttribute("TOKEN");
看看这个例子
我们可以使用TestNG的
ITestContext
例如:
在测试课上
ctx.setAttribute("TOKEN", token);
在另一个班级进行同样的测试
String token = ctx.getAttribute("TOKEN");
看看这个例子
您可以在runner xml文件中传递参数。 及
您可以使用属性外部文件保存值。您可以在runner xml文件中传递参数。 及 可以使用属性外部文件保存值