我有一个 Web 应用程序,我正在使用 Selenium 和 Maven 进行并行测试。目前,我正在为每个测试定义登录 ID。我需要的是一个解决方案,我将有一个可供测试的用户池。在执行运行时,测试将选择用户 id 从该池中登录。一旦并行测试完成,用户 ID 应该被释放并可供下一个测试使用。应该监视池并且仅当一个或多个用户可用时才应该执行测试,这样我将避免由于用户不可用而导致的失败。
我是新手,所以我正在寻找一些想法/建议我如何实现上述内容。我正在使用 Java。
我有一个 Web 应用程序,我正在使用 Selenium 和 Maven 进行并行测试。目前,我正在为每个测试定义登录 ID。我需要的是一个解决方案,我将有一个可供测试的用户池。在执行运行时,测试将选择用户 id 从该池中登录。一旦并行测试完成,用户 ID 应该被释放并可供下一个测试使用。应该监视池并且仅当一个或多个用户可用时才应该执行测试,这样我将避免由于用户不可用而导致的失败。
我是新手,所以我正在寻找一些想法/建议我如何实现上述内容。我正在使用 Java。
您可以通过将用户的可用性定义为布尔值来做到这一点。考虑这四个类:
将 testUser 定义为对象的类:
package theo;
public class testUser {
public String id;
public String pwd;
public boolean availability;
public String getId() {
return id;
}
public String getPwd() {
return pwd;
}
public boolean getAvailability() {
return availability;
}
public void setAvailability(boolean availability) {
this.availability = availability;
}
public testUser(String id, String pwd, boolean availability) {
this.id = id;
this.pwd = pwd;
this.availability = availability;
}
}
带有 testUsers 的类:
package theo;
public class testUsers {
testUser Jessica = new testUser("Jessica", "Jessica's password", true);
testUser Julie = new testUser("Julie", "Julie's password", false);
testUser Jane = new testUser("Jane", "Jane's password", true);
public testUser[] allTestUsers = {
Jessica,
Julie,
Jane
};
}
带有测试方法的类:
package theo;
public class testMethod extends testUsers {
public void testWhatever(testUser user) {
System.out.println("Starting test with " + user.getId() + "'s credentials.");
user.setAvailability(false);
System.out.println(user.getId() + "'s availability is: " + user.getAvailability());
String id = user.getId();
String pwd = user.getPwd();
// load login page, perform login and desired tests
// ...
// possibly logout the user
// ...
System.out.println("Login test finished, going to release user.");
// and releasing the user
user.setAvailability(true);
System.out.println(user.getId() + "'s availability is: " + user.getAvailability());
}
}
由于用户的可用性而执行测试的类:
package theo;
import org.junit.Test;
public class testDemo extends testMethod {
@Test
public void performTestDueToUserAvailability() {
for (testUser testUser: allTestUsers) {
if (testUser.getAvailability()) {
testWhatever(testUser);
}
else {
System.out.println("User locked, skipping test.");
}
}
}
}
输出:
Starting test with Jessica's credentials.
Jessica's availability is: false
Login test finished, going to release user.
Jessica's availability is: true
User locked, skipping test.
Starting test with Jane's credentials.
Jane's availability is: false
Login test finished, going to release user.
Jane's availability is: true