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}],则跑不通过。此时排序不确定只需要校验是否包含在返回值内的话,则可以预期结果勾选“只检查数组中数据是否包含在预期结果中”

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

断言里面设置好预期不存在的字段
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容

  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,858评论 6 13
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 六【观点辨认器】 1.你选择分析哪句话? 【一位从大西南贫困山区中走出来即将在厦门某大学毕业的女孩说:“我决定回老...
    李雪燃阅读 615评论 0 0
  • 如今,在知识方面,每天输入的速度已经远远不及输出的速度了。 确实,时间一长,会写的会越来越感觉到乏力。 那么,如何...
    者行孙阅读 270评论 0 1
  • 嶷沛阅读 637评论 2 16