0

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

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

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

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

4

1 回答 1

1

为什么不参数化您的测试并将响应类型作为参数传递给 testng xml。然后根据该参数,您可以制作请求标头。我们对我们的网络服务测试做同样的事情。并再次编写一个用于验证的通用方法,该方法将根据参数的值确定将要出现的响应类型。

<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 方法也可以这样做

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

于 2014-12-24T07:02:03.807 回答