Locust压测框架实战:HTTP脚本编写

Posted 小洁码很快!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Locust压测框架实战:HTTP脚本编写相关的知识,希望对你有一定的参考价值。

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

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

如果你之前没接触过Locust,请先阅读Locust系列的上一篇文章吧:性能测试利器-Locust框架解析

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

比如请求这样一个GET接口:

http://192.168.2.130:8080/pinter/com/getSku?id=1&type=normal

先定义请求参数query_data(字典格式)

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

02用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参数

用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.com”,“address”:“Beijing”

HTTP请求断言

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

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

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


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


其他请求参数

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


现在就有这么一个机会,我邀请你进入我们的软件测试学习交流群:642830685,备注“csdn”大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

送给大家一句话,共勉:当我们能力不足的时候,首先要做的是内修!当我们能力足够强大的时候,就可以外寻了!

最后也为大家准备了一份配套的学习资源,你能在 公众号:【程序员二黑】免费获取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中资料包括了有基础知识、Linux必备、Shell、互联网程序原理、mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

往期回顾:

在职阿里6年,一个29岁女软件测试工程师的心声

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档…

腾讯二面:web测试问题被虐哭了,直到学长给了我这些知识点…

以上是关于Locust压测框架实战:HTTP脚本编写的主要内容,如果未能解决你的问题,请参考以下文章

locust压测非http协议

python服务器性能测试工具locust使用指南

locust 压测之脚本检查点

locust压测

locust接口压测

使用python的locust库进行性能测试