我正在使用Selenium Webdriver按照PageObject模式开发自动化框架,其中有2层:
我的测试类包含TestNG注释方法(@Test
,@BeforeTest
,@AfterTest
等),其中我正在创建PageObject类的对象并调用这些类中的方法,这将是实际上与AUT互动。
我将数据传递给测试的方式是包括:
在属性文件中(例如:testDataSet1.properties)。我正在创建属性文件的HashMap<String, String>
并将其作为参数传递给所有页面对象,这些对象将从散列映射中读取数据并在脚本中使用它们。我根本没有从测试类中传递测试数据。
我的问题是什么,我不确定在PageObjects中读取测试数据是否合适。我觉得这种方法非常不灵活,因为我将测试数据绑定到PageObjects而不是将它绑定到测试中。因此,当我需要在多次迭代中执行数据驱动的测试/运行自动化套件时,这将无法工作。因为,目前如果我需要使用不同的数据,每次我需要手动去更改hashmap中指定的键,它将从属性文件中获取不同的值。
有什么建议吗?
答案 0 :(得分:2)
我个人喜欢让页面对象充当网页本身,为我提供执行操作和验证方法。例如,我将所有CSS,ID等选择器保留在页面对象本身中。这样,如果网页的更新中断了测试,我只需转到该网页的相应页面对象并在那里更新选择器。
就测试数据而言,我还有一些其他文件(类,属性等),用于从中提取测试数据。测试用户。测试类本身提取此测试数据并将其传递给Page Objects(需要时)或Page Object方法以进行验证。
测试数据类的一个例子(我的有点复杂,但这只是一个简单的例子):
public TestUser(){
username = getUniqueUser();
password = "";
name = "Test User";
email = getUniqueEmail(username);
}
TL;博士;