背景: 我有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以编程方式决定调用哪个测试。我无法找到一种以编程方式实现此目标的好方法。有什么建议吗?
答案 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方法
也可以这样做这样,您将只有一个可以为两种响应类型运行的测试套件