http get请求相同的key_Locust压测框架实战:HTTP脚本编写

9f74a3cf79b60c8b4969944079bfb635.gif

前段时间写了一篇Python压测框架Locust入门的文章,没想到激起了很多测试同学的兴趣,纷纷在后台留言希望能深入学习Locust。

应广大同学的强烈要求,今天我就带领大家再来学习下如何使用Locust来编写更多类型的HTTP脚本。

如果你之前没接触过Locust,请先阅读Locust系列的上一篇文章吧:

性能测试利器-Locust框架解析

使用Locust发送GET请求

对于GET类型的HTTP请求,可以使用self.client.get()函数。

比如请求这样一个GET接口:http://192.168.2.130:8080/pinter/com/getSku?id=1&type=normal 先定义请求参数query_data(字典格式)

5985e6c8a3825d2fdcab0966001b7ef7.png

再调用get函数,将query_data传给params参数

9696215bd21bf1b2500b038268f00001.png

使用Locust发送表单类型的POST请求

对于表单类型的post请求,它的特点是参数格式为key=value&key=value,可以使用self.client.post()函        数

比如请求这样一个POST接口:http://192.168.2.130:8080/pinter/com/login

先定义请求参数form_data(字典格式),然后调用post函数,将入参form_data传给data参数

68dbf79352274e7bc219d32f4e1af4e0.png

使用Locust发送Json类型的POST请求

对于Json类型的POST请求,它的特点是入参是一个Json字符串,在调用self.client.post()函数时,需要把json字符串转为字典再传入

比如请求这样一个Json接口:http://192.168.2.130:8080/pinter/com/register

参数:{"userName":"test","password":"1234","gender":1,"phoneNum":"110","email":"beihe@163.c

om","address":"Beijing"}

431641ce658c1d316a6b55d431bd9082.png

HTTP请求断言

使用Locust发出HTTP请求后,Locust默认是判断HTTP响应状态码,如果是200,则认为请求成功,否则就是失败。

在实际工作场景中,通常都要根据服务端返回的响应内容,来判断业务是否成功。比如服务端返回了状态码为200,响应内容为:{"code":400, "msg":"请求参数不能为空"} ,很明显, 我们要根据返回的code或者msg来判断,而不是状态码。

在Locust中,调用get/post函数时,加入一个catch_response=True参数,配合with语句,将服务端响应保存到一个变量里,就可以在代码中根据业务规则标记本次请求是成功还是失败。

e6360ea04e7e193004c9c277fde8a3cb.png

在压测执行过程中,如果遇到判断失败的请求,会在Locust的控制页面中显示出来

df17ddf0b5b8150019c06551f8d58782.png

9736f117c20a86261d37d286e0e2a642.png

其他请求参数

在发送get/post请求时,除了url、params、data、json、catch_response参数外,还支持一些其他的参数,请参考下面表格中的描述

48694dac8fd8fc31f33c9377f9bd5562.png

f40b996c5761d30e78edb9d94c5c9628.gif

推荐学习

码同学Java测试开发旗舰班,开课倒计时!

挑战年薪50W!

658e8b2dd840bec87d04bea75ad6694e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Locust是一个基于Python的开源试工具,它使用简单、灵活,并且具有横向扩展的能力。它的源码托管在GitHub上,任何人都可以查看和改进它。 Locust的源码结构清晰,易于理解和维护。它主要包含以下几个关键模块: 1. core模块:该模块包含了框架的核心逻辑,定义了Locust类和TaskSet类。Locust是用户定义性能试的入口点,它包含了任务执行的逻辑。TaskSet则定义了一组任务,可以同时执行多个任务。 2. runners模块:该模块定义了Locust运行器,负责创建并管理用户定义的Locust实例,以及处理试过程中的各种事件。不同的运行器可以适应不同的场景需求。此外,该模块还提供了监视器类,用于收集和展示试过程中的数据。 3. web模块:该模块实现了Locust的Web界面,可通过浏览器或通过API与Locust进行交互。它使用了Flask框架,并提供了一些API端点,包括启动和停止试、获取试结果等。 4. stats模块:该模块定义了Locust运行过程中的性能统计信息,包括请求数、失败数、响应时间等。它通过使用EventHook类和快照机制来收集和处理这些统计数据。 5. clients模块:该模块提供了向目标系统发送HTTP请求的功能,支持常见的HTTP方法和一些特殊功能,如Cookie管理、用户代理设置等。 总的来说,Locust的源码非常清晰、可扩展且易于理解。用户可以通过查看源码来了解其内部机制,并根据自身需求对其进行二次开发和定制。同时,Locust社区非常活跃,用户还可以参与到项目的改进和维护中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值