jmeter使用if控制器_Jmeter登录接口测试

本文介绍了如何使用JMeter进行登录接口测试,包括参数定义、调用Python脚本加密密码、正则表达式提取信息、Debug Sampler调试、循环与If控制器的使用。通过模拟登录过程,提取并验证登录状态,实现登录接口的全面测试。
摘要由CSDN通过智能技术生成

        之前使用python模拟登录过设备也正常获取到了cookie,这次使用jmeter来实现登录,熟悉一下jmeter的各个组件

        这次登录用到一些组件,参数的定义,调用外部python脚本,正则表达式提取信息,debug组件调试正则表达式,循环语句,和if逻辑组件判断登录是否成功

        给我的感觉像是有一半写代码的感觉,只是这种是图形界面上进行的

        整体的脚本如下:

579f06f3ad20179badc86171b7bb0f1a.png

首先创建一个用户变量定义组件,用来存储相关变化的信息,譬如账号密码,ip等等

c50ebdbf6fbbe034bc06f5e67ae5e756.png

再创建一个循环控制器,看需要执行多少次,变量的使用方式是${变量名}

2e7110da635100a85517e388ed0025a2.png

进行一个操作,将密码进行两次加密,第一次为md5,第二次为sha

这对于我这个会python不会java的人来说实属头疼,但是方法多的是,使用OS Process Sampler组件来调用系统命令执行python脚本,然后再用正则表达式提取即可

601463d7061485c329f2db818c1ad551.png

python脚本

#coding:utf-8import hashlib,syspwd = sys.argv[1]pwd1 = hashlib.md5(pwd.encode('utf-8')).hexdigest()pwd2 = hashlib.sha1(pwd1.encode('utf-8'))pwd2 = pwd2.hexdigest()print(pwd2)

cabc7663c3e73ca2245efd221c294f93.png

Apply to:应用范围

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

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

正则表达式:正则表达式

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

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

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

实在不知道怎么写模板和匹配数据那么就直接写$0$和1,在debug中会输出所有信息,然后自己去选择正确的信息

4b54a8a149f6a01e052f257d542e0014.png

然后提交数据还需要一个token值,是访问/login/mainbody获取到的,那么添加一个http请求和请求头,和两个正则提取器提取登录前的cookie和token

b8367ada79e64bf870b3fb168f38893d.png

52cf580c343ac90f9372be7017871977.png

22e448bb161d4028249f976ddca85817.png

c59c19060119ce68d582914b67344cdb.png

登录的所需要的参数君依旧获取到了,那么进行登录,添加一个请求和请求头,将获取到的cookie加入到请求头中,token加入到post参数中

7252b8b35ea5859b2e4c712f8b280d7f.png

25930c4b52e4d46a466a98eb7e9dc237.png

添加一个登录后的响应判断,如果其中跳转页面是/entranc/jump则登录成功,否则失败,然后正则提取这个登录后的跳转地址,用作if控制器的判断,再提取服务器返回的登录后的cookie值

be94a1e613daa9f5942b78611ec5e4cc.png

6d72dba2e0a1bd966d87fdf1ec8271ed.png

添加一个登录后的if逻辑控制器判断是否正常登录了,则进行状态的获取,否则不进行之后的操作,这里面只支持写true和false,不能直接写语句

"${login_result}"=="https://${dut_ip}/entrance/jump"

这样子是不行的,所以需要借助函数__groovy,或者__jexl3

49288afd1abab37f4bf8a0fe17b87f08.png

${__groovy("${login_result}"=="https://${dut_ip}/entrance/jump",)}

9b16bc2c105dfabe422fb8486e329f4d.png

最后添加登录后页面的访问,获取最新的cookie和token值

f5fb6dc805968833e47c0c8ea4ecc8ad.png

添加结果树查看到状态页面访问成功,登录成功

ebf1bfd662511d6ff53eb8ed438e2b79.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值