我想运行一些自动化测试来测试处理流程工作流的 Web 应用程序。
对于与应用程序本身的接口(interface),我已经编写了一个页面对象模型,它利用 Selenium WebDriver 来与应用程序的多个组件进行交互。
现在我即将编写一些测试,这些测试应该允许我为该特定应用程序运行一些自动化测试。作为测试框架,我想使用 TestNG。
但是由于被测试的应用程序是一个工作流应用程序,我发现我总是需要先完成流程的某个部分,然后再进行测试。
示例测试用例 1:向达析报告中的特定任务添加 Activity
- 登录应用程序
- 打开文件 x
- 在达析报告 x 中打开任务 y
- 将 Activity z 添加到达析报告 x 中的任务 y
示例测试用例 2:为达析报告中的任务添加特定 Activity 的计划
- 登录应用程序
- 打开文件 x
- 在达析报告 x 中打开任务 y
- 将 Activity z 添加到达析报告 x 中的任务 y
- 添加 Activity z 的计划
正如您从上面的示例中看到的,我总是需要自己完成一定数量的类似步骤,然后才能进行实际测试。
作为我自己的起点,我开始编写 TestNG 类。一个用于测试用例 1,第二个用于测试用例 2。然后,在每个测试类中,我实现了许多与测试步骤相对应的测试方法。
请参阅下面的测试用例 1 的示例代码:
public class Test_Add_Activity_To_Task_In_Dossier extends BaseTestWeb {
private Dossier d;
private Task t;
@Test
public void login() {
System.out.println("Test step: login");
}
@Test(dependsOnMethods = "login")
public void open_dossier() {
System.out.println("Test step: open dossier");
}
@Test(dependsOnMethods = "open_dossier")
public void open_task() {
System.out.println("Test step: open task");
}
@Test(dependsOnMethods = "open_task")
public void add_activity() {
System.out.println("Test step: add activity");
}
}
这里是测试用例 2 的示例代码:
public class Test_Add_Planning_For_Activity_To_Task_In_Dossier extends BaseTestWeb {
private Dossier d;
private Task t;
@Test
public void login() {
System.out.println("Test step: login");
}
@Test(dependsOnMethods = "login")
public void open_dossier() {
System.out.println("Test step: open dossier");
}
@Test(dependsOnMethods = "open_dossier")
public void open_task() {
System.out.println("Test step: open task");
}
@Test(dependsOnMethods = "open_task")
public void add_activity() {
System.out.println("Test step: add activity");
}
@Test(dependsOnMethods = "add_activity")
public void add_planning() {
System.out.println("Test step: add planning");
}
}
因此,正如您已经注意到的那样,随着要编写的测试用例数量的增加,这种测试结构是不可维护的,因为我现在总是在进行实际测试之前先重复相同的步骤。 .
因此,我想向社区询问如何才能使所有内容更加可重用,并避免在每个测试用例中一遍又一遍地编写重复的步骤
欢迎所有想法!!
最佳答案
根据我的理解,您希望删除每个测试用例之前正在执行的重复操作,例如
Login to application
Open dossier x
Open task y within dossier x
您可以使用@BeforeMethod
,这样它将在每个测试用例之前执行这些先决条件任务(基本上您可以保留每个测试之前需要的常见任务)。
@BeforeMethod
public void setUp()
{
login();
open_dossier();
open_task();
}
测试用例 - 1
@Test
public void testAddActivity()
{
add_activity();
}
测试用例 - 2
@Test
public void testAddPlanning()
{
add_planning()
}
关于java - TestNG 中测试的可重用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59856889/