我需要能够在不同的环境(最多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)但数千次测试。
设置和处理针对不同环境进行测试所需的数据的最佳方法是什么?
答案 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;
}
这有助于将我们的用户名和密码保存在一个文件中。 回复我进一步查询。快乐学习: - )