Locust--如何写一个locust脚本

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

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是一个使用Python编写的可扩展、分布式的开源性能测试工具。 优点 相比于Jmeter、Loa...
    忆江南_1569阅读 2,657评论 1 6
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,937评论 0 5
  • Locust是什么? Locust 是一个开源负载测试工具。使用 Python 代码定义用户行为,也可以仿真百万个...
    zychen143阅读 7,214评论 1 2
  • 他 容颜布满皱纹 黑发白了头 不善言辞却固执如孩子 爱山间的露珠 和 夕阳下的锄头 门口的老黄狗和屋前昏昏欲睡的小...
    太阳没你明亮阅读 256评论 0 0
  • 离开豆瓣很久的时间,最近无意中又开始刷。不知道什么时候开始关注鼹鼠的土豆,又这么机缘巧合的看到鼹鼠的土豆开写作课有...
    Miss瘦瘦小姐阅读 260评论 0 0