jmeter断言
感谢peakchao提供的API接口https://blog.csdn.net/c__chao/article/details/78573737。
从中选择一个接口即可,我使用的是https://api.apiopen.top/todayVideo
1.查看结果
使用python+requests获取当前结果
import requests
url = "https://api.apiopen.top/todayVideo"
r = requests.get(url)
print(len(r.json()['result']))
print(r.json()['code'],r.json()['message'],len(r.json()['result']))
count=1
for i in r.json()['result']:
print(count)
print(i['data'])
count+=1
结果如下:返回code(值),message(值),result(数组)
2 使用Jmeter进行测试断言
2.1 响应后断言
判断响应中是否存在文本,可以指定多个文本
假如存在多个“成功”字段,会对断言造成干扰,最好使用多个文本匹配结果。
2.2 使用Json Path Assertion断言
2.3使用BeanShell断言
2.3.1利用ResponseCode和返回内容长度进行判断
//ResonseCode要用equals判断
log.error(ResponseCode);
if(ResponseCode == 200){
log.error("code == 200 true");
}else{
log.error("code == 200 false");
}
if(ResponseCode == "200"){
log.error("code == \"200\" true");
}else{
log.error("code == \"200\" false");
}
if(ResponseCode.equals(200)){
log.error("code equals 200 true");
}else{
log.error("code equals 200 false");
}
if(ResponseCode.equals("200")){
log.error("code equals \"200\" true");
}else{
log.error("code equals \"200\" false");
}
//判断内容长度
String res = prev.getResponseDataAsString();
if(res==null||res.length()==0){
Failure = true;
FailureMessage = "no content";
}else{
Failure = false;
log.error("have content");
}
2.3.2先利用json提取器获取message字段,再利用BeanShell断言
log.error("终端");
//只有引用类型才能使用equals。即使用equals,需要先添加双引号,转化为String类型
//if(${code}.equals(200)){
// log.error("! equals 200 true");
//}else{
// log.error("! equals 200 false");
//}
if(!"${code}".equals("0")){
log.error("! equals \"200\" true");
Failure = true;
}else{
log.error("! equals \"200\" false");
Failure = false;
}
// ==
if("${code}" == "200"){
log.error("== 200 成功");
}else{
log.error("== 200失败");
}
if(${code} == 200){
log.error("== \"200\" 成功");
}else{
log.error("== \"200\" 失败");
}
if("${message}".indexOf("成功")!=-1){
log.error("message包含\"成功\"");
}else{
log.error("message不包含\"成功\"");
}
2.4 size assertion判断返回内容的大小
2.5 断言持续时间
如果耗时超过断言持续时间,断言错误