gpt4 book ai didi

java - 为基于 testng 的框架进行测试用例清理的最佳方法

转载 作者:行者123 更新时间:2023-12-02 04:21:33 32 4
gpt4 key购买 nike

我正在使用 selenium Web 驱动程序、testng 和 java 构建一个测试框架。在做框架POC的时候,我遇到了一个问题。我想在每个测试用例之后执行一些代码,这会将应用程序删除/重置为其基本状态。对于每个测试用例,此清理代码可能有所不同。

假设我有两个名为 A 和 B 的模块。在模块 A 中,我有 3 个测试用例 Test1、test2、Test3。我想对每个测试用例(Test1、Test2 和 Test3)运行清理。每个测试用例的清理代码可能不同。所以使用@AfterMethod注解并不能解决我的问题。

那么如何设计测试类结构呢?

我已经尝试过以下方法。

方法1:

@Test
public void test1() {
try {
System.out.println("test1");
} catch(Exception e) {
System.out.println(e);
takescreenshot();
} finally {
System.out.println("clean up for test1");
}

}

缺点:1)在每个测试用例中我都需要遵循一些定义的结构2)代码重复。3)如果finally block 中发生任何错误,testNG报告将吞掉原始错误并显示finally block 中发生的错误,这是不好的。

方法2:为每个测试用例创建一个测试类

public class Test2 {

@BeforeMethod()
public void preCondition() {
System.out.println("pre condition");
}

@Test
public void test2() {
System.out.println("test2");
}

@AfterMethod()
public void postCondition() {
System.out.println("post condition");
}

}

缺点:1)需要创建多个类,这是一个开销。2)测试用例之间不会发生变量共享。(即在2个测试用例中使用变量“var1”可能会很困难,因为它们位于不同的类中)

方法3:将模块拆分为子模块/粒度级别,并组合使用常见清理的测试用例。 @测试 公共(public)无效测试2(){ System.out.println("使用名称创建数据库"); }

@Test
public void test3() {
System.out.println("create DB with ID");
}

@AfterMethod
public void tearDown() {
System.out.println("Delete DB");
}

缺点:1)不可能每次都分割成子模块。测试人员在向任何模块添加新的测试用例时需要仔细思考,思考它属于哪个子模块

哪种方法会更好?您目前正在遵循任何不同的结构/方法吗?

设计测试类有什么最佳实践吗?

最佳答案

创建一个单独的类,其中包含执行不同清理任务的所有方法。在测试方法的finally block 中相应地调用这些方法。通过这种方式,您可以避免上述所有缺点。

关于java - 为基于 testng 的框架进行测试用例清理的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56634069/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com