接口性能测试 ---locust 脚本编写(一)
本文分享自天翼云开发者社区《接口性能测试---locust脚本编写(一)》,作者:丁****乐
一、安装
locust 是用 python 编写的一款开源接口性能测试工具,以 python3 为例,直接使用 pip 安装即可,pip3 install locust。安装完成之后可使用 locust --version 查看对应的版本。
![](https://static001.geekbang.org/infoq/d6/d6ea7edb6da3d5922ae9a256242405da.png)
二、脚本编写
通过编写 python 脚本模拟用户行为进行性能测试,locust python 脚本一种比较常见的写法是将脚本分成三部分,第一部分进行相关导入、第二部分进行用户行为定义,第三部分进行用户定义。以一个例子进行讲解
![](https://static001.geekbang.org/infoq/44/442ef15b9d8e988c42c4fe023e424ad7.png)
首行进行了包导入,导入了常用的类、装饰器和函数。
Behave 定义了进行用户行为定义,声明了两个操作,一个是 get 请求,一个是 post 请求。
TestUser 定义了用户,tasks 是用户要操作的行为,wait_time 是用户行为之间的间隔时间,host 是服务地址(可以不在这里填写,后面进行讲解)。
1、用户行为定义
类定义:需要定义继承自 TaskSet 的类,其他的还可以有 SequentialTaskSet,且该类不可以重写__init__方法;
行为定义:用函数进行用户行为定义,该函数用 task 装饰器进行装饰,task 标识任务权重,值越大权重越大。可以定义多个函数,模拟多个行为。self.client 表示当前用户,可以通过 self.client 进行各种请求操作。
1)请求发送
self.client 本质上是一个 requests.Session 对象,支持常见的请求方法,如 get/post/put/delete。涉及 header,cookie,请求参数的处理等请参考 python requests 库。
2)断言设置
locust 默认 2XX 的返回状态码是正确响应,如需自定义断言设置可通过在请求中设置 catch_resoponse=True 捕获返回值进行处理,对返回值做校验后调用 success 和 failure 函数标记响应结果是否正确。如下,只有当返回状态码是 302 的时候认为测试结果正确,否则提示 status error 错误
![](https://static001.geekbang.org/infoq/e0/e0062236940e087c48c389864e367626.png)
3)预处理函数
on_start 函数是预留的用于进行初始化操作的函数,可以根据需要进行定义,该函数只有在第一次运行的时候才会进行调用。比较常见的如登录操作,关闭 https 证书校验等
2、用户定义
定义用户类需要继承 HttpUser 或者 FastHttpUser;
tasks 属性是一个列表,用于定义用于行为,可以将定义好的用户行为类加进去;
wait_time 是只用户两个请求之间的时间间隔,常用的函数有随机时间间隔 between,固定时间间隔 constant;
host 用于指定被测服务地址,可在脚本中进行设置,也可以在脚本运行时再设置;
编写完成之后可以通过 locust -f script_name.py 命令运行调试,通过 http://loccalhost:8089 打开默认的 web 服务。
评论