TestNG系列-第五章 测试方法、测试类和测试分组(续3)-依赖关系

7 依赖关系(dependencies)
有时,测试方法需要按某种顺序执行,比如:
  • 在运行更多的测试时,需要确保确定数量的测试方法执行完成并且成功
  • 当需要初始化一些方法,而这些初始化方法也是测试方法

7.1 依赖注解
使用@Test注解的属性 dependsOnGroupsdependsOnMethods。这种情况有两种注解:
  • 硬依赖(Hadr dependencies):所有依赖的方法必须成功运行。如果至少有一个依赖方法失败,测试方法将不会调用并在测试报告中标记为SKIP。
  • 软依赖(soft dependecies):即使依赖的测试方法有运行失败的,测试方法也会执行。软依赖通过@Test的属性设置always=run实现。


硬依赖例子:
@Test
public void serverStartedOk() {}
 
@Test(dependsOnMethods = { "serverStartedOk" })
public void method1() {}


method1()方法依赖serverStartedOk方法运行,保证serverStartedOk总是首先运行。

测试方法也可以依赖分组的执行:
@Test(groups = { "init" })
public void serverStartedOk() {}
 
@Test(groups = { "init" })
public void initEnvironment() {}
 
@Test(dependsOnGroups = { "init.*" })
public void method1() {}

在这个例子中,method1() 声明依赖任何附和正则表达式“init.*”的分组。 serverStartedOkinitEnvironment将一直优先method1方法执行。
注:在同一个分组中的测试方法不能保证每次运行顺序都一样。

硬依赖配置(alwayRun=false,默认设置)。
dependsOnGroups  和  dependsOnMethods  都接受正则表达作为参数。对于 dependsOnMethods,如果依赖的方法有几个重载(overloaded)版本,所有的重载的方法都是调用。如果只是想调用其中一个重载方法,可以使用dependsOnGroups。

对于更多关于依赖方法可是参考t his article ,

默认情况下,依赖方法都是通过类来分组 。比如:方法b()依赖方法a(),我们有这个类的实例,这些实例包含这些方法,则调用方法将会是:
a(1)a(2)b(2)b(2)
TestNG将所有的实例的方法a运行完之后才会运行b

这种行为可能在某些情况下是可取的,比如,测试对于不同国家的浏览器签入和签出。我们可能需要如下运行方法:
signIn("us")signOut("us")signIn("uk")signOut("uk")

对于这种顺序,我们可以使用xml的属性 group-by-instances ,这个属性在标签<suite>和<test>都有效
  <suite name="Factory" group-by-instances="true">or  <test name="Factory" group-by-instances="true">

7.2 在xml中设置依赖
使用标签< dependencies>
<?xml version="1.0" encoding="utf-8"?>
<test name="My suite"> 
  <groups> 
    <dependencies> 
      <group name="c" depends-on="a  b"/>  
      <group name="z" depends-on="c"/> 
    </dependencies> 
  </groups>
</test>

<depends-on>属性可以包含一个空格分隔的列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值