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

时间:2016-05-19 11:24:33

标签: java selenium testng

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

我有一个测试方法:

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

在UserData类中我有:

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;
}

我的数据类和方法数量有限(< 100)但数千次测试。

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

1 个答案:

答案 0 :(得分:0)

对于不同的用户, 您始终希望我的所有测试用例都保持不变,并且只需要很少的更改。 所以这就是我所遵循的。 我创建了一个文件,让我们在eclipse中说出username.properties文件。

username=xyz@gmail.com 密码= passswd1

您可以在此处创建多个用户,其名称为。

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

现在我们需要在课堂上调用这个文件。 见下面的例子。

主要测试

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

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

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

这将是SendkeysMethodForSignInPAgeForPropertyFile,它是:

公共类SignInPage {

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()类中读取:

  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;
  }

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