编写jmeter测试用例_JMeter 编写接口测试用例遇到的问题及解决

一、BeanShell Sampler使用JS函数生成的日期月份小于10时是个位数

开始用的是:

"baseDate": "${__javaScript((new Date()).getFullYear()+'-'+ ((new Date()).getMonth()+1) + '-' + (new Date()).getDate(),)}"

生成的月份和日期小于10时都是个位数,比如2018-9-8

如果接口文档预期返回的格式是2018-09-08,则不匹配

一个办法是,用java.util.Calendar类

import java.text.SimpleDateFormat;

import java.util.Calendar;

public String myDate(){

String res;

Calendar cal = Calendar.getInstance();

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

res = simpleDateFormat.format(cal.getTime());

return res;

}

vars.put("baseDate",myDate());

一个办法是,用java.util.Date类

需注意 new Date(myYear-1900,month,day) 实际生成的月份是 month+1

需注意日期转换

SimpleDateFormat("yyyy-MM-dd") 生成的结果日月个位时会在个位数前加0

SimpleDateFormat("yyyy-M-d") 生成的结果日月个位时就是个位数

日月是个位数生成的是两位.png

日月是个位数生成的是一位.png

日月是两位数生成的是两位.png

二、下游接口M发送请求和接口N返回值都用到同一字段A,BeanShell Sampler事先设置好字段A

提前生成需要用的字段A.png

之后接口M请求用到此字段A.png

接口N返回值断言用到字段A

举一反三,只要某字段是唯一固定的,后面有很多地方用到,就可以事先把它设置好(通过获取/新建),之后 ${name} 引用即可.

三、调用格式转换函数,注意函数参数的格式和传参value值原来的格式

这个问题也是在生成日期进行格式转换时遇到的,当时接口返回的createTime是个时间戳一串数字

时间戳是一串数字

时间戳转换成年月日时分秒的函数如下:

import java.text.SimpleDateFormat;

import java.util.Date;

public String stampToDate(String s){

String res;

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

long lt = new Long(s);

Date date = new Date(lt);

res = simpleDateFormat.format(date);

return res;

}

重点来了,如果用以下这行代码不能成功转换,猜猜是为什么?

vars.put("createDateAndTime", stampToDate(String.valueOf(${createTime})));

1

2

3

想到了吗?

因为 ${createTime} 获取到的是一串数字,此处传参需要是个字符串~

解决方法很简单 加上双引号 变成字符串~即

vars.put("createDateAndTime", stampToDate(String.valueOf("${createTime}")));

四、需求明确返回内容不能包含某字段,校验是否没返回该字段,需事先特别设置

事例接口是获取患者列表,有很多个患者(对象)。截图只截了一部分如下:

接口返回的数组里有多个对象

断言只是其中一个对象

接口运行是通的,没有报错。

因为默认情况下,预期返回内容"obj":[{a}],实际返回内容"obj":[{a},{b},{c}],后面多出的内容不会去校验。

注意a必须是第一个,如果预期返回内容"obj":[{c},{b}],实际返回内容"obj":[{a},{b},{c}],则跑不通过。此时排序不确定只需要校验是否包含在返回值内的话,则可以预期结果勾选“只检查数组中数据是否包含在预期结果中”

如果需求明确是返回内容不能包含某字段,需校验确实没返回该字段,需事先设置。

断言里面设置好预期不存在的字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值