第一个知识点:登录成功后,其他请求需要用到token值的处理方法如下:
点击配置元件-HTTP信息配置管理器
添加如下图所示的请求头信息即可:这样子,其他接口发送请求的时候,请求头就会附带这个token,就可以免登录了
第二个知识点:对于请求的请求体(body data)里面使用json格式来发送请求,需要在信息头配置如下信息:
注意:如果服务器不支持解析json数据,那么就不能使用json格式来发送请求了
第三个知识点:请求时,不同传参方式需注意的点:
1、如果使用的parameters来传值,不用操心content-type,也不需要设置
2、如果使用的body data来传值,
【1】、如果非json格式来传值,以这种形式来传值,就是类似于parameters来传值了,但是,content-type必须设置成:application/x-www-form-urlencoded; charset=UTF-8,如下图所示:
传值方式如下图所示,那么就得在图二中操作
图二:
【2】、如果使用的json格式来传值,那么请看第二个知识点所解释的来设置.
第四个知识点:对于变量的使用
【1】在pameters中可以使用变量,如下图所示:
【2】在body data中可以使用变量,如下图所示:
第五个知识点:跨线程使用变量的几种常用方法:
注意:在使用时要注意线程组的执行顺序,需要勾选测试计划里的独立运行每个线程组按钮
【1】、Bean Shell内置变量来存取值
第一步:通过创建后置处理器--Bean Shell PostProcessor,props.put("属性名","值") -----设置属性并赋值 ,如下图所示:
方法一:多个paramters需要用空格隔开,然后代码中通过bsh.args[index]来获取相应的变量值
方法二:直接通过变量名来赋值
第二步:通过创建BeanShell PreProcessor 前置处理器,通过props.get("属性名") 获取属性值后,在把值存入到变量中,最后在使用的地方直接用变量名就可以取值了,如下图所示:
【2】、通过创建后置处理器--Bean Shell PostProcessor,使用beanshell设置全局变量
注:为什么很多地方有些说parameters里面需要添加bean shell区域中要用到的变量,并且还得在${__setProperty(newJsession,${seesion},)}加一个逗号,有没有能给我解说的大佬呀?
jmeter自带函数__setProperty
设置变量如下图所示:
其他地方要使用变量通过:${__property(变量名)} 或者是:${__P(变量名)}
第六个知识点:Bean Shell常用内置变量
JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下:
-
log:写入信息到jmeber.log文件,使用方法:log.info(“This is log info!”);
-
ctx:该变量引用了当前线程的上下文,使用方法可参考:org.apache.jmeter.threads.JMeterContext。
-
vars - (JMeterVariables):操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),它是测试用例与BeanShell交互的桥梁,常用方法:
a) vars.get(String key):从jmeter中获得变量值
b) vars.put(String key,String value):数据存到jmeter变量中
更多方法可参考:org.apache.jmeter.threads.JMeterVariables
-
props - (JMeterProperties - class java.util.Properties):操作jmeter属性,该变量引用了JMeter的配置信息,可以获取Jmeter的属性,它的使用方法与vars类似,但是只能put进去String类型的值,而不能是一个对象。对应于java.util.Properties。
a) props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
b) props.put("PROP1","1234");
-
prev - (SampleResult):获取前面的sample返回的信息,常用方法:
a) getResponseDataAsString():获取响应信息
b) getResponseCode() :获取响应code
更多方法可参考:org.apache.jmeter.samplers.SampleResult
-
sampler - (Sampler):gives access to the current sampler
第七个知识点:两种常用后置处理器,获取服务器返回的相应数据,例如:token,cookie、其他接口需要的值
【1】、正则表达式提取器(Regular Expression Extractor)
例如:提取cookie时,如下所示:
因为cookie是在响应头里面的所以需要注意选择响应头去提取,而不是body,这一点绝对要看清楚了
例如:提取token时,因为是在响应体里面,所以直接选择body,一般默认是body,不需要改变,如下所示:
提取其他值,跟提取token的方式一模一样
【2】、JSON提取器(JSON Extractor),因为token在data--》token_info---->token,所以层级关系通过$.data.token_info.token来获取token的值
若存在几个token_info,通过下标来选择,下标从1开始,例如:$.data.token_info[1].token ,若想要获取其他值,可以通过$.data.code等等,想获取什么就用“点”
第八个知识点:逻辑控制器的使用
第九个知识点:使用正则表达式提取器提取服务器的响应值需要注意的地方
需注意,要通过查看Text模式去查看返回的json数据,因为正则表达式是根据Text模式排序来取值的,
如果用Json模式去查看返回的json数据,会导致里面的值排序不一样,导致我们在写正则表达式的时候写错,从而提取不到我们想要的值,例如我想提取id的值,如图所示:
用观察结果树中,使用Text模式查看到的json数据,id后面的是regname
使用Json模式查看到的json数据,id后面的是pwd
正确的正则表达式如下图所示:
第十个知识点:文件上传
标签:知识点,jmeter,变量,json,token,使用,Jmeter From: https://www.cnblogs.com/angelgril/p/12558766.html