正文
首先,项目地址:免费天气API接口|天气预报接口|全球天气API接口|气象预警|空气质量
需要自己注册,免费适用接口,学习够了。在下文中注意appid&appsecret,这两者自己注册后系统会给到。
接下来正文:
正则表达式
=====
这个相信大家比较熟悉了,不管写代码还是用工具,多多少少都会接触到一些,本篇首先就来说说这个:线程组》》添加》》后置处理器》》正则表达式提取
值得注意的是,这里只是告诉你添加到路径,在不同需要的地方添加正则提取器方法大同小异。
我们先添加一个HTTP请求:
再添加一个查看结果树,以及聚合报告。提前先全部加上。请求看看结果:
你们输出是unicode的编码的,所以这里可以通过一些转码直接转成,或者直接搜搜Unicode转码,复制进去转码即可。这里我用了其他的方法。
jmeter中找到这个文件,把这里修改了,然后在HTTP请求中添加一个BeanShell 监听器即可。监听器中我们复制如下代码进去再次请求就是中文了:
String s=new String(prev.getResponseData(),“UTF-8”); char aChar; int len= s.length(); StringBuffer outBuffer=new StringBuffer(len); for(int x =0; x aChar= s.charAt(x++); if(aChar==‘\’){ aChar= s.charAt(x++); if(aChar==‘u’){ int value =0; for(int i=0;i<4;i++){ aChar= s.charAt(x++); switch(aChar){ case’0’: case’1’: case’2’: case’3’: case’4’: case’5’: case’6’: case’7’: case’8’: case’9’: value=(value <<4)+aChar-‘0’; break; case’a’: case’b’: case’c’: case’d’: case’e’: case’f’: value=(value <<4)+10+aChar-‘a’; break; case’A’: case’B’: case’C’: case’D’: case’E’: case’F’: value=(value <<4)+10+aChar-‘A’; break; default: throw new IllegalArgumentException( “Malformed \uxxxx encoding.”);}} outBuffer.append((char) value);}else{ if(aChar==‘t’) aChar=‘\t’; else if(aChar==‘r’) aChar=‘\r’; else if(aChar==‘n’) aChar=‘\n’; else if(aChar==‘f’) aChar=‘\f’; outBuffer.append(aChar);}}else outBuffer.append(aChar);} prev.setResponseData(outBuffer.toString());
废话就到这,接下来我们提取其中的city对应的值:线程组》》添加》》后置处理器》》正则表达式提取
根据你的请求来,这里值得注意的是正则表达会根据你响应的内容不同而提取不到内容,这里指定提取city对应的值深圳。各有用处,如果你想根据不同的响应内容提取不同的城市请查阅本篇:Jmeter–【作为测试你必须知道】高级应用–断言、变量的使用+报告输出_清欢无别事-CSDN博客_jmeter断言中使用变量
这里在正则在接下的讲解中会起到一定的作用。正则解析:
():括起来的部分就是要提取的。
.:匹配任何字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
而我此处的city之前的值就是告诉它去这个指定的值往后的值,直到,结束,这期间取到的值就是“深圳”了。
模板:用KaTeX parse error: Can't use function '式中有多个正则表达式,则可以是′inmathmodeatposition28:…式中有多个正则表达式,则可以是' in math mode at position 28: …式中有多个正则表达式,则可以是̲23$等等,表示解析到的第几个值给token。如:1 11表示解析到的第1个值。
匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
那么问题来了我怎么看到提取的值呢,我们有一个Java请求可以帮到我们:线程组》》添加》》取样器》》Java请求