测试数据应该从PageObject或测试类传递吗?



我正在使用Selenium Webdriver开发一个自动化框架,遵循PageObject模式,其中有2层:

  • 测试类(测试规范)
  • PageObject类(测试实现)

我的测试类包含TestNG注释方法(@Test, @BeforeTest, @AfterTest等),我正在创建PageObject类的对象并调用这些类中的方法,这将实际与AUT交互。

我将数据传递给测试的方式是包括:

    元素的所有定位器(css/xpath/class/id定位器)应用程序。
  • 所有需要的测试数据
属性文件中的

(例如:testDataSet1.properties)。我正在创建属性文件的HashMap<String, String>,并将其作为参数传递给所有页面对象,这些页面对象将从哈希映射中读取数据并在脚本中使用它们。我根本没有通过测试类的测试数据。

我的问题是,我不确定是否适合在PageObjects中读取测试数据。我有一种感觉,这种方法非常不灵活,因为我将测试数据绑定到PageObjects,而不是将其绑定到测试。因此,当我需要在多个迭代中执行数据驱动测试/运行自动化套件时,这将不起作用。因为,目前,如果我需要使用不同的数据,每次我需要手动去改变在hashmap中指定的键,这将从属性文件中获取不同的值。

有什么建议吗?

我个人喜欢让页面对象充当网页本身,为我提供要执行的操作和要使用的验证方法。例如,我将所有的CSS、ID等选择器保存在页面对象本身中。这样,如果网页的更新中断了测试,我只需转到该网页对应的Page Object并更新那里的选择器。

至于测试数据,我有一些其他文件(类、属性等),我用它们来提取测试数据。测试用户。测试类自己提取这些测试数据,并将其传递给Page Objects(当需要时),或者传递给Page Object方法以进行验证。

一个测试数据类的例子(我的例子有点复杂,但这是一个简单的例子):

public TestUser(){
    username = getUniqueUser();
    password = ""; 
    name = "Test User";
    email = getUniqueEmail(username);
}

tl;博士;

  • 我将html选择器保留在各自的页面对象中(如果需要,可以使用子页面对象进行重用)。我将测试数据混合在类、属性文件和测试类之间。

最新更新