如何为从包含用户ID的文件中提取登录详细信息的测试实现多用户登录

问题描述 投票:0回答:1

我有一个Web应用程序,我正在测试Selenium和Maven运行并行测试。目前,我正在为每个测试定义登录ID。我需要的是一个解决方案,我将有一组用户可用于测试。执行运行时,测试将选择用户ID以从此池登录。完成并行测试后,应释放用户ID并使其可用于下一次测试。应该监视池,并且只有当一个或多个用户可用时才应该执行测试,这样我就可以避免因用户不可用而导致的故障。

我是新手,所以我正在寻找一些想法/建议我如何实现上述目标。我正在使用Java。

java testng synchronized multiple-login parallel-execution
1个回答
0
投票

您可以通过将用户的可用性定义为布尔值来实现此目的。考虑这四个类:

将testUser定义为Object的类:

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
© www.soinside.com 2019 - 2024. All rights reserved.