TestNG执行测试用例的方法

TestNG是一个非常好用d自动化测试框架,对于经常使用seleniumweb端UI测试的童鞋来说是个不错的工具。

  具备基本常识的测试童鞋们,可能需要知道存在即合理,存在即有用的道理。任何一个工具,或者一件事的存在如果令人得不到益处,那么是不会有人继续使用的。这个常识基本上人人都懂。

  在自动化测试,TestNG是个非常好用的框架。在实际项目中,会有成千上百个测试用例进行执行,这时候需要用到并发执行测试。在TestNG中,提供了很好的并发执行的方法。下面从4个方面来理一下:

  TestNG对并发执行的处理。

  1. TestNG并发执行测试的实现方法【Suite.xml, testng.xml etc 】

  2. TestNG并发执行测试的测试用例执行顺序控制[ preserve-order, priority ] 

  3. TestNG并发执行测试用例的优先级控制 [ priority = 0, 1, 2, 3, 4 ....] 

  4. 设置TestNG对某些测试用例作为选测或者忽略测试的控制【optional 】

  下面详细具体来说。

  1.  TestNG里有suite的概念,即可以把多个测试用例放在一个***testng.xml的XML文件中执行,里面有定义好的要测的测试用例。举个栗子。

 

<suite name="Test-class Suite" parallel="tests" thread-count="2">
           <test name="test-method One">
            <parameter name="test-name" value="test-method One" />
             <classes>
                 <class name="testngcase.ParallelSuiteTest" />
             </classes>
          </test>
         <test name="test-method Two">
          <parameter name="test-name" value="test-method Two" />
           <classes>
             <class name="testngcase.ParallelSuiteTest" />
          </classes>
        </test>
      </suite>

在测试项目目录下创建xml文件,设定好要测试的测试用例,如上码好,不要遗漏。同时,这里需要在类方法里有对应的@BeforeTest注解,和@Parameters({"param-name"})来完成测试用例到XML文件的

  照应关系,注意param-name必须跟xml文件里的parameter name值 1 1对应。好了,这样就完成一个并发用例的执行,右键Run As TestNG class即可。

  2. 如果想要进一步的对测试套集里的测试用例执行顺序进行限定和设置的话,那么可以用到TestNG的另一个属性preserve-order, 当preserve-order="true", 表示测试用例按照XML文件里所列的顺序进行顺序执行,当preserve-order="false"时,表示测试用例不会按照XML文件里的顺序进行顺序执行,即会有乱序执行。

<xml version="1.0" encoding="UTF-8" > 
   <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">  
     <suite name="test_testng">  
        <test name="test" preserve-order="true">    
            <classes>  
                <class name="testngcase.ParallelClassesTestOne"></class>
                <class name="testngcase.ParallelClassesTestTwo"></class>
            </classes>  
        </test>  
   </suite>

如上一个使用preserve-order来控制测试用例执行的顺序的xml文件,实际执行的时候,将会按照上面给定的顺序1次执行ParallelClassesTestOne, ParallelClassesTestTwo两个测试用例。

  3. 如果还想有其他的自如控制用例执行顺序的需求,那么TestNG提供了一个priority关键字,可以自行设定。具体见栗子。

@Test(priority=1)
     public void testMethodOne() {
       long id=Thread.currentThread().getId();
      System.out.println("Sample test-method One. Thread id is:"+id);
     }
     @Test(priority=2)
     public void testMethodTwo() {
      long id=Thread.currentThread().getId();
      System.out.println("Sample test-method Two. Thread id is:"+id);
     }

上面两个测试方法上分别在@Test后加了priority=*的设定,通过设定priority的值来控制方法执行的顺序,值越大,执行顺序越靠后。

   4. 其他有助于测试用例的执行的关键字,对于执行用例时因为各种因素可能出现的状况而不能执行时,可以采用在@Test(enabled=false)设定来忽略某些测试方法。

  @Test(enabled=false)
         public void testMethodTwo() {
            long id=Thread.currentThread().getId();
           System.out.println("Sample test-method Two. Thread id is:"+id);
          }

这样做了标注后就达到里忽略此测试方法的目的。      

  另外一个关键字,@Optional通常用在@Parameters相关的测试方法下,对于在xml文件中没有对参数值给出值的参数,给出一个备选的值,以免执行出现问题。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取   

 

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG支持测试用例的依赖关系,即一个测试方法依赖于另外一个测试方法执行结果。如果一个测试方法依赖于另外一个测试方法,那么在运行测试套件时,TestNG会先运行被依赖的测试方法,如果该方法执行成功,再运行依赖该方法的测试方法。这样能够确保测试方法执行顺序和依赖关系。 TestNG提供了两种方式来实现测试用例的依赖: 1. 通过dependsOnMethods属性实现依赖关系 在@Test注解中使用dependsOnMethods属性来指定被依赖的测试方法。例如: ``` @Test public void loginTest() { //登录测试逻辑 } @Test(dependsOnMethods = {"loginTest"}) public void searchTest() { //搜索测试逻辑 } ``` 在上面的例子中,searchTest方法依赖于loginTest方法,因此在运行测试套件时,TestNG会先运行loginTest方法,如果该方法执行成功,再运行searchTest方法。 2. 通过dependsOnGroups属性实现依赖关系 在@Test注解中使用dependsOnGroups属性来指定被依赖的测试组。例如: ``` @Test(groups = {"login"}) public void loginTest() { //登录测试逻辑 } @Test(groups = {"search"}, dependsOnGroups = {"login"}) public void searchTest() { //搜索测试逻辑 } ``` 在上面的例子中,searchTest方法依赖于一个名为“login”的测试组,而loginTest方法属于该测试组。因此在运行测试套件时,TestNG会先运行loginTest方法,如果该方法执行成功,再运行searchTest方法。 使用dependsOnMethods或dependsOnGroups属性可以方便地实现测试用例的依赖关系,但是需要注意依赖关系的正确性和可维护性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值