前面两篇我写了一些理论和一篇实战篇,不知道各位是否能理解。本章我们来讲讲一些其他的一些操作。
博主在这里说明一下,接口是免费的,不过需要自己注册,如自己有接口的可以跟着教学一步步来,没有的可以考虑考虑加博主微信qing_an_an,与大伙一起学习,绝对不是广告,都是经过筛选才能加入,抱有一颗学习的心。有资源大家一起分享,有兴趣的可以来看看。
jmeter的简单理论
jmeter--实战篇
本篇没有什么特别特殊的东西,只是一些比较常用,实用的一些东西,像输出测试报告,断言等等。接口的链接在jmeter--实战篇里面。自提吧。
断言
我们先来了解一下jmeter断言:
jmeter默认规则,只要能够正常请求,且正常返回,他都默认为成功。断言机制,是我们能否自动化的核心标准。我们在加入断言机制后,不需要人工比对响应内容,减少认为工作。
接着上一章所讲,我们简单的做一个断言。先来看看上一章jmeter响应的内容是什么。
这里响应数据还挺多。我们随意,随性一点,工作可不能随性。注意哈,博主不想带偏你们。我们在这里直接断言“city”:“深圳”,看看有什么样的效果。
首先我们添加一个JSON提取器,这里是在后置处理器中添加的,为什么是在后置处理器中,讲个说笑的,你可以去前置处理器中看看有没有。只有跑了HTTP请求后才能拿到数据,这一点毋庸置疑的,如果你在前面添加了,那岂不是添加了一个空气。
为什么要添加一个JSON处理器。这一点。因为返回值中就是JSON格式的,所以是JSON处理器。最简单直白的解释了。
添加JSON提取器后,打开就是这样的了。names of created variables简单的理解就是你要断言的值是哪一个。JSON Path expressions就是表达式。${}这样的取值方式,记住即可。
我们表达式里面提取的就是我们响应里面的city值。我们提取的值,那么肯定是要断言的。呢么我们添加一个JSON断言。
添加断言后,我们直接双击打开
Assert JSON Path expressions,我们添加之前的断言表达式到里面。这里系统默认是勾选下面的Match as regular expreesion,匹配正则表达式。我们自己还可以另外勾选上面的添加断言的对比值,也就是Addtionally assert value。在内容框中输入一个断言的对比值。
这里可以看到我在深圳的HTTP请求中,添加这个一个断言,肯定会报错。这里我写入一个上海,在发送请求后,jmeter会进行判定,如果不是city不是上海则报错,如果是上海则pass。
看结果,我写的断言是内容是上海,这里跑出来的是深圳,所以HTTP请求报错了,并且给出了明确的提示。是不是超级的nice。信息挺详细。
一次查询多地天气
这里是一个非常有趣的东西,我们直接上教程,在jmeter中跑文件,查看多处的天气。
准备一个csv文件,输入多个地区名,包括小地区。看看会是怎么样的一个情况。
我们需要添加一个循环控制器,来控制它循环的次数,也就是csv文件中有多少条数据,我们就需要循环多少次。
循环控制器之前我添加了一个用户自定义变量,便于更改地址。
前面我添加了五条数据,所以这我循环五次。
另外需要添加一个csv处理器
添加好csv文件处理器后,我们直接设置HTTP请求。
添加一行数据,用表达式取值。这里很多人看到了不一样的地方了,就是我的ip跟端口号都不一样了,用的表达式方式了。前面才说了用了用户自定义变量的方式。有益于后续更改地址的时候方便改值,你可以直接把路径一起到用户自定义里面去。
我在HTTP名称那里也加了表达式,目的就是便于看懂那个请求是哪个请求,我们直接看结果
跑起来:
这个接口存在bug,这也是我跑的过程中发现了,不知道各位有没有发现。
另外看HTTP加表达式,就能得到这样的结果,每一个请求后面都有对应的名字。
小结
我们用到的表达式,也就是变量,有什么好处?
内容中只说到了一点点。变量可以一个场景多组变量调动,也方便我们更改变量值后直接发起下一波的请求,而不是改完这里接着改下一处。可以随时应对环境的变化。而csv文件这一块,也就是上文中我们讲到的读取多处天气情况。必须用到循环处理器,不然就只能读取到文件中第一个位置的天气情况。
报告
这里的报告,和其他的地方不一样虽然也是自动生成的。生成jmeter的测试报告就一串代码
D:\Jmeter\apache-jmeter-5.3\bin\jmeter -n -t report_login.jmx -l result.jtl -e -o F:\jmeter报告\public\report
# D:\Jmeter\apache-jmeter-5.3\bin\jmeter --这里是jmeter的位置
# F:\jmeter报告\public\report --这里是文件的位置,文件夹名字随意
# report_login.jmx 这个是跑完后的事件
那么其他的-n,-t等啥意思呢:
-n 以非GUI方式运行Jmeter
-t 获取我们的jmx脚本路径
-e 脚本运行结果后 生成html报告
-o 存放html报告目录
result.jtl 文件保存路径(运行结果),此文件必须不存在
比如我创建 的,我需要在F:\jmeter报告\public目录下cmd进去再输入这一串代码,也就是需要切换到这对应的文件夹中去。
这就是生成的报告HTML形式的。
注:如有想法,欢迎一起来交流,非机构人员,群成员较少,只留有上进心的人员,大佬,刚入门的都有,微信号卸载了文章开头处。有兴趣的欢迎加入