使用不同数据测试多个环境 - 最佳实践

Testing multiple environments with different data - best practice

我需要能够 运行 在不同的环境(最多 3 个)上进行相同的测试,但每个环境的数据不同。

我有一个测试方法:

@Test (groups = "core", description = "Login: Valid log in")
public void validLogin() {
    User user = UserData.user_2();
    loginPage.logOn(user);
}

在用户数据中 class 我有:

public static User user_2() {
    return new User().newUser("user2", "password");
}

"user2" 并非在所有环境中都存在。我可能无法更改所有环境中可用的数据以匹配测试数据。

测试将使用 Maven 和 TestNg 执行,因此我可以发送执行环境的参数。

我最初的想法是使用:

public static User user_2() {
    switch(env) {
    case "env1": return new User().newUser("user2", "password"); break;
    case "env2": return new User().newUser("user2Z", "password"); break;
    case "env3": return new User().newUser("user2X", "password"); break;
}

我的数据classes和方法(<100)数量有限,但有几千个测试。

设置和处理针对不同环境进行测试所需的数据的最佳方式是什么?

当涉及到不同的用户时, 您总是希望我所有的测试用例都保持原样,并进行最少的更改。 所以这就是我所遵循的。 我在 eclipse 中创建了一个文件,比如 username.properties 文件。

用户名=xyz@gmail.com 密码=passwd1

您可以在此处使用名称创建多个用户,即

rohan=rohan@gmail.com rohan 的密码:rohan

现在我们需要在 class 中调用这个文件。 请参阅下面的示例。

主要测试

SignInPage.SendkeysMethodForSignInPAgeForPropertyFile(driver, By.cssSelector("input[id='Email']") , "username" );

SignInPage.SendkeysMethodForSignInPAgeForPropertyFile(driver, By.cssSelector("input[id='Passwd'][type='password']"), "password"); 

所以这里的用户名将从属性文件中获取。

这将转到 SendkeysMethodForSignInPAgeForPropertyFile,即:

public class 登录页面 {

public void SendkeysMethodForSignInPAgeForPropertyFile(WebDriver driver, By by, String Text) {
    WebUtils.SendkeysForPropertyFile(driver,by, Text);
  }
}

它将转到 SendkeysForPropertyFile 方法:

 public static void SendkeysForPropertyFile(WebDriver driver, By by, String Text) {
    ReadFileData File = new ReadFileData();
    Properties Values = File.ReadFile();
        WebElement Element = driver.findElement(by);
        Element.clear();
        if (Text == "username"){
        Element.sendKeys(Values.getProperty("username"));
        }
        else {
        Element.sendKeys(Values.getProperty("password"));
        }

将从 ReadFileData() class 读取,即:

  public class ReadFileData {
  public Properties ReadFile() {
      File file = new File("D:\Selenium\Gmail_Web_UI\Loginproperty.properties");

        FileInputStream fileInput = null;
        try {
            fileInput = new FileInputStream(file);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        Properties prop = new Properties();

        //load properties file
        try {
            prop.load(fileInput);
        } catch (IOException e) {
            e.printStackTrace();
        }

        return prop;
  }

这有助于将我们的用户名和密码保存在一个文件中。 回复我进一步查询。快乐学习:-)