美文网首页
Locust--如何写一个locust脚本

Locust--如何写一个locust脚本

作者: doral_y | 来源:发表于2018-03-30 11:03 被阅读0次

一、性能测试工具的比较:

Loadrunner主要缺点是只能在windows上使用,且并发效率低,单台压力机难以产生较高并发。

Jmeter也存在并发效率低的问题且很容易内存溢出,非GUI模式的数据统计不精确。

Locust采用Pure Python脚本描述,且http协议基于requests库,简洁且功能强大。除了HTTP(S)协议,locust也可以测试其它任意协议的系统。locust采用协程机制,协程和线程的区别在于,协程避免了系统级资源调度,由此大幅提高了性能。

二、Locust的使用:

1. 安装:pip install locustio

2. 先看一段代码(登录及查询报名信息)

脚本中包含两个类:getUserListBehavior(继承了Taskset)和UserList(继承了HttpLocust,HttpLocust又继承了Locust)。

Locust类:具有client属性,可以通过该属性使用python的requests库,执行GET/POST/HEAD/PUT/DELETE/PATCH等方法。

Locust类中还有以下几个属性(见UserList类的代码):

task_set:指向Taskset类(本例为getUserListBehavior)

max_wait/min_wait:每个用户执行两个任务的时间间隔。默认为1s。

host:被测系统的域名,设置时启动locust可以在终端不必输入—host参数

Taskset是个任务集合,对虚拟用户的所有行为(任务)进行组织和描述,并可以对不同任务的权重进行配置。

3.  web和no-web形式运行

web方式:

1)locust -H http://debugtalk.com -f demo.py  (脚本中指定了host后不用带-H 参数)

2)浏览器中打开http://localhost:8089,输入并发数和启动虚拟用户速率

no-web方式:

指定—no-web,例如locust -f ccc_getUserList.py  --no-web -r 2 -c3

4.脚本运行(no-web为例):

1)单台压测机(不指定slave)

locust -f ccc_getUserList.py  --no-web -r 2 -c3

2)分布式压测(master-slave)

Master:locust -f ccc_getUserList.py --master  --master-bind-port=5557 --no-web -r 100-c100  --expect-slaves=2

Slave:locust -f ccc_getUserList.py --no-web –slave

部分内容引自:

http://debugtalk.com/post/head-first-locust-user-guide/

http://debugtalk.com/post/head-first-locust-advanced-script/

相关文章

网友评论

      本文标题:Locust--如何写一个locust脚本

      本文链接:https://www.haomeiwen.com/subject/zxwbcftx.html