我可以通过更改测试数据来调用不同的TestNG测试吗?

时间:2014-12-24 03:00:48

标签: testng rest-assured

背景: 我有REST API,我正在使用Rest Assured进行测试。我使用TestNG进行测试。但是,对于Accept请求标头的不同值(application / xml OR application / json),API响应是不同的。对于例如 - xml响应中存在的标签显示不同的键,如“employeeNo”。

因此,我必须编写两个不同的测试(断言和解析) - 一个用于xml响应,另一个用于json响应,其他一切保持不变。对于例如 - updateEmployeeNameJsonTestSuite和updateEmployeeNameXmlTestSuite。

当前的方法: 我有两个不同的测试数据文件和两个不同的测试套件 - 一个用于json响应,一个用于xml响应,每个都使用TestNG提供的-suiteName选项调用。

问题: 我想在测试数据文件中参数化Accept Request Header的值,然后让TestNG以编程方式决定调用哪个测试。我无法找到一种以编程方式实现此目标的好方法。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

为什么不参数化测试并将响应类型作为参数传递给testng xml。然后根据该参数,您可以生成请求标头。我们对Web服务测试也这样做。并再次编写一个通用的验证方法,根据参数的值确定响应的类型。

<suite name="My suite">
  <parameter name="ResponseType"  value="Json"/>
  <test name="Simple example">
  <-- ... -->




 @Parameters("ResponseType")
    @Test
    public void testNonExistentParameter(@Optional("xml") String ResponseType) { 
// Use Response type
}

对于@before方法

也可以这样做

这样,您将只有一个可以为两种响应类型运行的测试套件