jmeter接口测试-17XPath关联
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jmeter接口测试-17XPath关联相关的知识,希望对你有一定的参考价值。
参考技术A在Jmeter中,除了正则表达式可以用作关联,还有一种方式也可以做关联,那就是 XPath Extractor。它是利用xpath提取出关键信息,传递变量。
具体用法
添加一个后置处理器- XPath Extractor
实际操作
以腾讯新闻网为例,我们做一次演练。对腾讯新闻网我们发起一次请求,观察结果。
现在我想利用xpath把这些url都取出来,我们来写一个xpath表达式匹配一下。发现url都被匹配出来了。
.//a[@class=\'linkto\']/@href 具体是什么意思呢?意思就是通过a>class>href这三层标签进行逐级检索,找到class=linkto标签下的所有href,进行匹配
这里如果我想匹配到href标签下的文字标题怎么办?改一下表达式吧-- .//a[@class=\'linkto\'], 我们发现取出来都是标题,后面可以再进行拼接
现在表达式没有问题了,我们将添加的xpath提取器挂在http请求下面。添加一个debug查看结果,可以看到debug中已经获取到了这些url
我们可以添加两个xpath提取器,分别提取url和title进行拼装,运行查看结果
** xpath基本语法**
// [@class,\'A \']/@href 从根目录下定位所有class=A的href*
****//*[@class,\'A \'] **从根目录下定位所有class=A标签内的文本******
******//*[contains(@class,\'A \')] ******从根目录下******@class值中包含A的节点******
******substring-before(.//*[@class=\'A\']/text(),\'0\') 返回根目录下[@class=\'A\']/text()中第一个\'0\'前面的部分,如果不存在\'0\',则返回空值******
********substring-after(.//*[@class=\'A\']/text(),\'0\') 返回根目录下[@class=\'A\']/text()中第一个\'0\'后面的部分,如果不存在\'0\',则返回空值********
jmeter 单接口测试方案(接口无业务关联)
前言
前面开了一篇讲了Jenkins+jmeter+ant的使用,但没有说到具体怎么投入到项目使用,主要介绍了接口测试定义,流程和环境部署,所以我今天要说的就是我是怎么将这个方案投入到实际中使用的。这套方案主要用于相互接口之间无业务关联的测试。
结构设计与数据准备
接口测试的流程
1、 项目启动后,测试人员要尽早找到开发人员拿到接口测试文档
2、 获取接口测试文档后,就可以进行接口用例的编写和调试
3、 接口用例编写调试完成后,部署到持续集成的测试环境中,
4、 设定脚本运行频率,告警方式等基本参数,进行接口的日常监控
5、 每日进行接口脚本的维护更新,接口异常的处理
jmeter测试过程
jmeter+jmeter+ANT 整体结构设计
测试数据
我的测试数据是用CSV管理的,包含域名、url、方法(get还是post)、 参数 、预期结果(可以是多个),使用excel创建然后转化程csv格式,这样一来我们只需要在excel中维护我们的用例就好了
从数据格式可以看出,做了用例的执行标识,选中为YES时才执行,NO时不执行,这是一个用例选择执行的简单设计,还有请求的方法也是可以选择的,目前项目中的主要用POST和GET,除此之外之后要获取的还有用例名,调用的接口和具体的测试请求数据,这就是使用excel管理测试用例的模块
注意:包含中文字符jmeter取值可能会报错,修改${jmeterhome}/bin/jmeter.profile
# The encoding to be used if none is provided (default ISO-8859-1) #sampleresult.default.encoding=ISO-8859-1 sampleresult.default.encoding=UTF-8
配置基本完成,之后就是项目的目录架构:
- ./Test_Play/目录用来放Jmeter生成的Case文件(编写时注意,不要用绝对路径,否则后续维护成本会提高)
- ./Test_suit/目录用来放Jmeter测试需要的相关配置文件
- ./资源/目录用来存放项目相关的一些文档信息
- build.xml文件,Ant的配置文件
- 阅读build.xml文件,会发先还有一个自动生成的目录./report,该目录下有两个目录jtl以及html,用来放置不同格式的测试报告。
脚本设计
添加一个CSV Data Set Config,把我们的文本路径填进去
添加BeanShell PreProcessor和BeanShell PostProcessor,主要 目的是为了处理中文乱码
添加if控制器,根据case_satus判断该条用例是否执行,根据Ament判断是HTTP请求还是JAVA请求,根据method,来判断执行get还是post的请求
设置断言,判断我们的结果是否正确
根据用例数,设置循环次数
- 可使用java直接取值判断有多少条用例进行执行
-
String filename=vars.get("JF_API_data"); String [] datalist=new String[20]; String content; InputStream openfile = new FileInputStream(filename); Workbook wb = Workbook.getWorkbook(openfile); Sheet FirstSheet = wb.getSheet(0); int totalRows=FirstSheet.getRows(); int rows=totalRows-1; //减1是因为我标题行不取,为了后面从第二行开始取 String data=rows.toString(); vars.put("row",data); //用例行数 wb.close();
运行调试,查看结果
接入jenkins
脚本设计完以后,接入jenkins用ant去执行jmx就可以了,至于怎么用可以看我上一篇文章,报告预览:
以上是关于jmeter接口测试-17XPath关联的主要内容,如果未能解决你的问题,请参考以下文章