Karate框架中如何对比API返回的application/octet-stream格式下载文件
解决方案(均为Karate内置能力,无需调用Java方法)
方案1:将响应字节数组转为字符串比对(更推荐,可读性更高)
用Karate内置的karate.toString()方法直接把二进制响应转成UTF-8字符串,和读取的文本直接比对:
Given path '/download/testing/'+fileId When method get Then status 200 And match karate.toString(response) == read('../files/test.txt')
如果你的文本文件用的是非UTF-8编码,可指定编码作为第二个参数,示例:karate.toString(response, 'GBK')
方案2:将读取的文本转为字节数组比对
如果你希望以二进制维度匹配,用内置的karate.toBytes()方法把读取的文本转成字节数组,和响应直接比对:
Given path '/download/testing/'+fileId When method get Then status 200 And match response == karate.toBytes(read('../files/test.txt'))
同样支持指定编码,示例:karate.toBytes(read('../files/test.txt'), 'GBK')
调试提示
如果修改后还是匹配失败,可先打印两个值确认内容差异:
* print "响应转字符串结果:", karate.toString(response) * print "读取文件结果:", read('../files/test.txt')
内容的提问来源于stack exchange,提问作者Mejmo
相关产品推荐
相关产品推荐

