【Jmeter】jmeter利用csv测试实例——中国天气网,查询几个城市的天气

记录第一个成功的测试实例,文章有些长,尽力记录的详细,欢迎交流。

问题背景

  1. 2个并发
  2. 参数化数据为你要查询的地区,提示至少使用csv data 组件。并能够说明组件中的sharing mode含义和实践举例
  3. 需要具有判断请求成功的检查点或者断言
  4. 测试结果图形化展示,或者数据展示

分析准备

(1)进入中国天气网(http://www.weather.com.cn/)
(2)点某个城市进入城市天气界面发现,页面网址为:http://www.weather.com.cn/weather1d/101120101.shtml#search

其中101120101,为城市代码编号(citycode)。
意味着,要查询某个城市(city)的天气,需要先获取该城市的城市代码编号citycode,传到到请求地址
http://www.weather.com.cn/weather1d/${citycode}.shtml#search中进行查询,就可以得到该城市的天气内容了。

一、CSV Data set Config的引用

1.建立一个csv文件,建立一个记事本文件,把后缀.txt改为.csv,打开该文件,编辑需要的数据,保存该文件。在这里插入图片描述

2.测试计划,右键添加CSV Data set Config, 点击浏览添加刚才的.csv文件,填写好其他配置(如图),线程共享模式(sharing mode)选择当前线程组,防止影响其他线程。
(切换语言为汉语 参考2-1)
在这里插入图片描述
在这里插入图片描述

CSV页面
1、名称:标识,建议设置为该组件是提供什么功能

2、注释:备注信息

3、Configure the CSV Data Source

(1)Filename:文件路径(包括目录和文件名)

(2)File encoding:文件编码,编码方式utf-8是为了防止存在中文时乱码,我们这个为城市代码提取不要设置为UTF-8,如图设置就可以

(3)Varale Names(Comma-delimited):设置变量名,供其他功能调用。如果存在多个变量 时,用,隔开

(4)Delimiter(use “\t“ for tab):分隔符(用“\t“ 代替制表符),是指在提取有多个参数时,在文件中以那个符号为分界点,进行提取(比如:数据为abc;123;test-----在提取时,需要该选项设置为;),我们用的.CSV文件,分隔符为,

(5)Recycle on EOF ?:是否遇到文件结束符再次循环?设置为True,在循环数超过数据时,会再次从第一条开始读取;设置为False,在读取到最后一条后,不再从第一条开始读取数据;

(6)Stop thread on EOF?:是否遇到文件结束符停止线程?是否在读取完最后一条数据后,停止线程;

(7)Sharing mode:线程共享模式。共享方式;一般使用默认就行(所有线程共享),可根据实际需求修改

--------------------注意:在配置变量和分隔符时一定要注意用英文模式下的符号;CSV文件中的数据分割时,也注意这个问题。

  • csv使用本来是要放在文章最后边,但是为了照顾中间的验证过程,后期放到了最前边,所以语言切换在第二章,且后续的图片中有的没有CSV,CSV也可以在一下两大块进行完之后导入。

二、获取城市代码编号

1.进入jmeter 更改语言为汉语(习惯了英文版的可以不用更改)
语言切换2-1

2.给测试计划(test plan)右键建立线程组(如图),并命名为 天气网 CSV压力测试(名字随意)。设置线程数和循环次数。
在这里插入图片描述

在这里插入图片描述

3.在天气网 CSV压力测试右键添加HTTP请求,命名为“获取城市代码”,填写服务器地址,和http请求

服务器:toy1.weather.com.cn 这个网站用名字来解析城市代码,中英文都支持
路径:/search?cityname=${city}

当city为“济南”时
地址请求之后为 toy1.weather.com.cn/search?cityname=济南
在这里插入图片描述
在这里插入图片描述

4.在获取城市代码 右键添加HTTP 信息头管理器(操作如图),然后添加名称“referer”和值 http://www.weather.com.cn在这里插入图片描述
在这里插入图片描述
5.在获取城市代码 右键添加正则表达式 提取器(操作如图),可更名为 提取天气代码 (我懒得改了,这样比较清楚 是添加了个什么。)
在这里插入图片描述
在这里插入图片描述

引用名称:citycode
正则表达式:(\d{9})~
模板:1
匹配数字:1,如果是0,就是随机获取,那么和city就有可能对不上

正则表达式提取器说明:

Apply to:应用范围

要检查的响应字段:样本数据源。

引用名称:其他地方引用时的变量名称,我这里写的phone,可自定义设置,引用方法:${引用名称}

正则表达式:,()括号里为你要获取的的值,\d匹配数字,{n}为重复N次,0-9的数字,为0-9次,此处表达式为重复9次。

模板:用于从找到的匹配项创建字符串的模板。这是一个带有特殊元素的任意字符串,用于引用正则表达式中的组。引用组的语法是:’ $ 1 $
‘引用组1,’ $ 2 $ '引用组2,等等。$ 0 $引用整个表达式匹配的内容。

匹配数字:正则表达式匹配数据的所有结果可以看做一个数组,匹配数字即可看做是数组的第几个元素。-1表示全部,0随机,1第一个,2第二个,以此类推。若只要获取到匹配的第一个值,则填写1

缺省值:匹配失败时的默认值。可以不写。若需用于后续逻辑判断,可简单写为 ERROR。

6.添加一个后置处理器中的:BeanShell PostProcessor ,用来处理响应结果的中文乱码显示(没有这行的话,话在接下来的debug取样其中查看当前阶段的 结果树,会有一些乱码);

脚本内容:prev.setDataEncoding("utf-8");
在这里插入图片描述
在这里插入图片描述
7.添加 debug取样器,添加查看结果树,用来调试,查看正则提取的城市代码编码结果。
在这里插入图片描述
在这里插入图片描述

8.运行,查看当前城市代码提取结果运行按钮

结果,获取了citycode 相关的有4个,后面这几个都可以用来被调用,用citycode。
在这里插入图片描述

三、获取城市天气

1.添加第二个HTTP请求( HTTP Sampler),命名为 获取城市天气信息,设置基本内容
服务器名称或IP:www.weather.com.cn
get方式,路径 :/weather1d/${citycode}.shtml

例如 city为济南,获取的citycode为101120101,请求为:http://www.weather.com.cn/weather1d/101120101.shtml

在这里插入图片描述
2.获取城市天气信息,右键添加 结果树,参考 2-7 的添加截图。

3.运行 查看,城市天气信息获取结果。
在这里插入图片描述

附录

可根据自己需要,添加需要的监听器
在这里插入图片描述
汇总报告
在这里插入图片描述

聚合报告:
在这里插入图片描述

表格查看结果:

在这里插入图片描述

写在最后

中间由于切换过文件夹,顶部线程组名称改过一次,天气网查询 和天气网 CSV压力测试是同一个线程组,只是改过名字。

CSV可以最后做,只是初学者有时候需要边做边验证,所以把csv的使用放在最开始了。

以上为结果,为个人学习过程,欢迎交流

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

竹青Carla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值