自动化测试第二节-jmeter关联+抓包+python基础
1、jmeter关联:从上一个请求中获取返回值提供给下一个请求使用
2、解决jmeter乱码问题:
打开apache-jmeter-2.11\bin\jmeter.properties文件,搜索“encoding”关键字,找到如下配置:
# The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1
将注释删掉,并改成utf-8编码,即:
The encoding to be used if none is provided (default utf-8)
sampleresult.default.encoding=utf-8
重启JMeter即可
3、实现Jmeter关联----JsonPath:(返回值是json串时才可用)
DestinationVariable Name随意填写,表示返回值的参数化
Default Value随便填写
JSONPath Expression填写需要获取的返回值,格式为$.parameter
在需要传这个返回值的其他接口中,传这个返回值的参数化变量${DestinationVariable Name}即可-----如${ninanie}
4、实现Jmeter关联----正则表达式方式:
引用名:正则表达式参数化的名称
正则表达式匹配:"token": "(.*?)"------(.*?)表示要匹配的值,括号左右分别为值的左右两边的显示
模板:固定值
匹配数值:1表示有多个匹配值时取第一个
缺省值:匹配失败时默认取的值
5、jmeter添加压力机:
1、谁的电脑做压力机,就把谁电脑上的jmeter-server.bat启动
2、这两台电脑要能ping通
3、在配置文件中加入这个IP,jmeter.properties,搜索"remote_hosts",如"remote_hosts=localhost:1099,192.168.2.119:1099"(端口号默认为1099)
4、重启jmeter
5、若有参数化的文件,则在压力机的同样目录下也必须有这个文件
运行压力机:
6、jmeter在linux运行:
1、先把jmeter上传到linux
2、把在window上做好的脚本上传到linux上面
3、执行shell脚本:./jmeter.sh -n -t class two.jmx -l response.jtl
(-n代表以没有图形化界面启动,-t代表后面是测试脚本,class two.jmx是jmeter脚本(不在当前路径下执行时此处填写文件的绝对路径),-l代表测试结果,response.jtl是测试结果文件)
4、看结果的话,需要将response.jtl下载到本地,然后在jmeter下添加聚合报告,浏览导入该文件即可
7、抓包:修改抓包的请求和返回
常用抓包工具:charles,fiddler
找到要拦截的位置,加入断点进行拦截:
再次通过浏览器发送一个http请求
编辑请求的url后点击Excute:(拦截请求并修改请求信息,执行后发送修改后的请求)
编辑返回的信息后点击Excute:(拦截response并修改返回信息,执行后返回修改后的响应结果)
8、配置http代理:
服务器主机名写电脑IP,端口默认8888
手机配置代理后,可以使用抓包工具进行抓包(手机和电脑需要在同一个局域网中)
https的请求都是加密的,请求和返回数据都无法看到,需要安装证书后才能看到
9、python基础
语言类型:
编译型语言:C、C++、C#(运行速度相对解释型语言来说更快)
解释型语言:python、java、perl、shell、ruby、php
从coding网站下载项目代码的方法:
上传到coding代码:
点击右上角的绿色图标
---弹框中选择commit and push(commit message必填),最后点击push即可
Python语言规范:
快速注释:ctrl+/
快速复制:ctrl+d
字符串有双引号有单引号时,可以用三个引号括起来,如print('''let's go,"nina"''')
字符串格式化,%s表示一个字符串,%d代表后面要加整数,%.2f表示后面要加2位小数,如print('我的年龄是%d,我有%d的钱' % (age,money))
使用input接受的数据类型都是字符串
定义变量,如name = "nina"
强制类型转换,如age = int(age)
连接字符串使用加号,如print(truename+'说'+say)
如果用while循环则必须有计数器,如:
i = 0
while i<10:
......
i+=1
......
continue:结束本次循环,即跳过这次循环,继续进行下一次循环
break:立即结束循环,break之后的代码不会再执行
随机产生一个1到100的整数:导入random后,src_num = random.randint(1,101)