javascript - 如何在邮递员测试中在一个 pm.test 中使用多个 pm.expect
问题描述
我想检查请求是否有一个字符串,然后响应必须在邮递员中包含这个字符串。我写了一个这样的测试,但它对我不起作用。我不确定我是否可以在有条件的一项测试中使用多个 pm.expect。我的代码是
pm.test("test",function(){
var hasA = data.hasOwnProperty('A');
var hasB = data.hasOwnProperty('B');
if(hasA === true){
pm.expect(response.A).to.eql(data.A);
}
if(hasB === true){
pm.expect(response.B).to.eql(data.B);
}});
请求可以同时包含 A 和 B,所以我不能使用 if..else 语句。当我运行此测试时,如果 hasA 标志为真,那么即使 hasB 选项为真,代码也不会进入第二次。我该如何处理这个问题。有人可以帮忙吗?
解决方案
expect 是硬断言,所以如果一个失败,那么它不会转到下一个,所以你可以使用以下任何一种方法:
试试如果条件像:
pm.test("test", function () {
var hasA = data.hasOwnProperty('A');
var hasB = data.hasOwnProperty('B');
var hasBoth = hasA && hasB
if (hasBoth) {
pm.expect([response.A, response.B]).to.eql([data.A, data.B]);
} else if (hasA) {
pm.expect(response.A).to.eql(data.A);
} else if (hasB){
pm.expect(response.B).to.eql(data.B);
}
});
或者
尝试像这样:
pm.test("test", function () {
var hasA = data.hasOwnProperty('A');
var hasB = data.hasOwnProperty('B');
let error = {};
try {
if (hasA) {
pm.expect(response.A).to.eql(data.A);
}
} catch (e) {
error.A = e
}
try {
if (hasB) {
pm.expect(response.A).to.eql(data.A);
}
} catch (e) {
error.B = e
}
if(Object.keys(error).length){
pm.expect.fail(JSON.stringify(error))
}
});
推荐阅读
- java - Spring MongoTemplate 对于来自 MongoDB 的 50000 条记录非常慢
- javascript - FullCalendar - 一天内显示所有事件
- c++ - 为什么OpenGL不画一个矩形?
- python - 使用 DLL 将 DLL (c#) 导入 Python with pythonnet
- c# - LogManager.ReconfigExistingLoggers() 不更新记录器归档生命周期
- java - log4j.xml 以不同的方式将相同的日志发送到文件和 td-agent
- java - 删除一个值并重构一个二维数组
- postgresql - PostgreSQL - 遍历替代查询结果
- directx - 在graphedit中连接网络摄像头的最佳方法是什么?
- python - 缺少可选依赖项“表”。使用 pip 或 conda 安装表