Karate框架如何为每个请求单独传入不同无效自定义header值完成测试
实现方案
你使用的是Karate接口测试框架,通过参数化循环调用子用例即可实现单请求对应单无效header值的需求,具体操作如下:
步骤1:在主用例中定义无效key值参数表
直接使用Karate自带的随机生成函数构造你需要的6类无效值:
* table invalidKeys | invalidKey | expectedStatus | | '#(randomString(10))' | 401 | // 随机字母串 | '#(randomNumber(8))' | 401 | // 随机数字串 | '#(randomAlphaNumeric(12))' | 401 | // 随机字母数字串 | '#(java.util.UUID.randomUUID().toString())' | 401 | // 随机GUID | '' | 401 | // 空值 | '!@#$%^&*()_+-=[]{}|' | 401 | // 特殊字符
步骤2:循环参数表调用子测试用例
通过call for each语法遍历无效值表,每一行参数单独发起一次请求:
* table input | machine | version | osSystem | | machineName| version | windows | * call read('你的子用例文件路径.feature') { machine: input[0].machine, version: input[0].version, osSystem: input[0].osSystem, key: '#(invalidKey)', expectedStatus: expectedStatus } for each in invalidKeys
如果你的input表有多行测试数据,可嵌套循环实现全组合场景覆盖。
步骤3:调整子用例适配参数传递
子用例直接读取主用例传入的key参数作为header值,补充响应状态断言即可:
Given url env And path path And header Content-Type = 'application/xml; charset=UTF-16' And header Accept = '*/xml; charset=UTF-16' And header key = key When method GET Then status expectedStatus
可选补充
如果需要排查测试日志,可在子用例中添加打印语句输出当前测试的无效值:
* print '当前测试的无效key值:', key
内容的提问来源于stack exchange,提问作者hungryhippos
相关产品推荐
相关产品推荐

