TestNG学习-工厂

工厂允许动态创建测试。 

    例如,假设你想创建一个测试方法,该方法将多次访问网站上的页面,并且希望每次使用不同的值来调用它,可以如下实现:

 public class TestWebServer {  @Test(parameters = { "number-of-times" })  public void accessPage(int numberOfTimes) {    while (numberOfTimes-- > 0) {     // access the web page    }  }}​​​​​​
<test name="T1">  <parameter name="number-of-times" value="10"/>  <classes>    <class name= "TestWebServer" />  </classes></test> <test name="T2">  <parameter name="number-of-times" value="20"/>  <classes>    <class name= "TestWebServer"/>  </classes></test> <test name="T3">  <parameter name="number-of-times" value="30"/>  <classes>    <class name= "TestWebServer"/>  </classes></test>

但是上面这种方式可能很快就会变得无法管理,因此,应该使用工厂:​​​​​​​

public class WebTestFactory {  @Factory  public Object[] createInstances() {   Object[] result = new Object[10];    for (int i = 0; i < 10; i++) {      result[i] = new WebTest(i * 10);    }    return result;  }}

新的测试类:​​​​​​​

public class WebTest {  private int m_numberOfTimes;  public WebTest(int numberOfTimes) {    m_numberOfTimes = numberOfTimes;  }   @Test  public void testServer() {   for (int i = 0; i < m_numberOfTimes; i++) {     // access the web page    }  }}

testng.xml只需要引用包含工厂方法的类,因为测试实例本身将在运行时创建:

<class name="WebTestFactory" />

如果以编程方式构建test suite实例,则可以按照相同的方式添加工厂执行测试:​​​​​​​

TestNG testNG = new TestNG();testNG.setTestClasses(WebTestFactory.class);testNG.run();

工厂方法可以像@Test和@ Before / After一样接收参数,必须返回Object []。返回的对象可以是任何类(不一定与工厂类相同),它们甚至不需要包含TestNG注解(在这种情况下,TestNG将忽略它们)。

工厂也可以与data provider一起使用,并且可以通过将@Factory注解放在常规方法或构造函数上来利用此功能。这是构造函数工厂的示例:​​​​​​​

@Factory(dataProvider = "dp")public FactoryDataProviderSampleTest(int n) {  super(n);} @DataProviderstatic public Object[][] dp() {  return new Object[][] {    new Object[] { 41 },    new Object[] { 42 },  };}

该示例将使TestNG创建两个测试类,分别使用值41和42调用构造函数。

 

类级别的注解

@Test注解不仅可以放在方法上,也可以放在类上:​​​​​​​

@Testpublic class Test1 {  public void test1() {  }   public void test2() {  }}

类级别的@Test注解的作用是使该类的所有公共方法都成为测试方法,即使它们没有被注解。如果要添加某些属性,仍然可以在方法上重复使用@Test注解。例如:​​​​​​​

@Testpublic class Test1 {  public void test1() {  }   @Test(groups = "g1")  public void test2() {  }}

以上将会同时添加两个测试方法,但是test2()属于g1组。

欢迎关注 公众号【测试备忘录】,一起交流学习~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG 是一种流行的测试框架,它提供了丰富的功能来进行单元测试、集成测试和端到端测试。TestNG 结合 TestAssured 可以进行接口自动化测试,以下是 TestNG TestAssured 接口自动化测试框架的优点: 1. 简单易用:TestNG TestAssured 框架易于学习和使用。TestNG 的注解可以方便地对测试用例进行分组、依赖、优先级等操作,而 TestAssured 提供了直观的 API,可以轻松地完成接口测试。 2. 支持多种验证方式:TestAssured 提供了多种验证方式,如 body、header、cookie、statusCode、responseTime 等,可以全面地验证接口的正确性。 3. 支持数据驱动:TestNG TestAssured 框架可以通过数据驱动的方式进行接口测试,可以通过 Excel、CSV、JSON 等数据源进行参数化测试,提高了测试效率和覆盖率。 4. 支持并发测试:TestNG TestAssured 框架支持并发测试,可以提高测试效率。可以通过 TestNG 的 parallel 属性来设置并发线程数,也可以通过 TestAssured 的 RestAssured.config() 方法来设置并发连接数。 5. 集成度高:TestNG TestAssured 框架可以与其他测试工具和框架集成,如 Maven、Jenkins、ExtentReports 等,可以方便地进行持续集成和测试报告生成。 总之,TestNG TestAssured 接口自动化测试框架具有易用性高、多种验证方式、数据驱动、并发测试、集成度高等优点,是进行接口自动化测试的不二选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值