locust是什么:
locust是一个用python写的用于进行性能测试的测试框架。利用协程达到高并发。(以greenlet为核心的一个并发框架,使用epoll事件监听机制)
有什么特点:
1、直接用python代码编写场景。基于协程,避免回调
2、支持大并发:单机支持大并发,同时支持分布式
3、提供测试结果页面:测试结果可以通过HTML+js的页面进行展示,实时显示测试细节,易于扩展。
4、支持测试任何系统
6、整个测试框架易于扩展
以上只是初略地知道了这个测试框架的特点,到底有多好用,用了才知道。
安装:
直接从github上下载源代码,pip setup.py install 就可以了。windows中运行执行locust有提示找不到.py文件证明已经安装了locust,可以简单利用locust测试用例py文件验证下即可。
写个简单的脚步(pythontest.py):
from locust import TaskSet, task, HttpLocust
class UserBehavior(TaskSet): def on_start(self): self.index = 0 @task def test_visit(self): url = self.locust.share_data[self.index] print('visit url: %s' % url) self.index = (self.index + 1) % len(self.locust.share_data) self.client.get(url) class WebsiteUser(HttpLocust): host = 'http://www.baidu.com' task_set = UserBehavior share_data = ['/'] min_wait = 1000 max_wait = 3000
在windows上运行,在该目录上打开cmd:
locust -f pythontest.py --no-web -c 1 -n 1
>locust -f pythontest.py --no-web -t1 -c1
[2018-04-16 00:07:58,572] DESKTOP-S9R0DUT/INFO/locust.main: Run time limit set to 1 seconds
[2018-04-16 00:07:58,573] DESKTOP-S9R0DUT/INFO/locust.main: Starting Locust 0.8
[2018-04-16 00:07:58,574] DESKTOP-S9R0DUT/INFO/locust.runners: Hatching and swarming 1 clients at the rate 1 clients/s...
Name # reqs # fails Avg Min Max | Median req/s
--------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------
Total 0 0(0.00%) 0.00
[2018-04-16 00:07:58,574] DESKTOP-S9R0DUT/INFO/stdout: visit url: /
[2018-04-16 00:07:58,575] DESKTOP-S9R0DUT/INFO/stdout:
[2018-04-16 00:07:59,573] DESKTOP-S9R0DUT/INFO/locust.main: Time limit reached. Stopping Locust.
[2018-04-16 00:07:59,574] DESKTOP-S9R0DUT/INFO/locust.main: Shutting down (exit code 0), bye.
Name # reqs # fails Avg Min Max | Median req/s
--------------------------------------------------------------------------------------------------------------------------------------------
GET / 1 0(0.00%) 45 45 45 | 45 0.00
--------------------------------------------------------------------------------------------------------------------------------------------
Total 1 0(0.00%) 0.00
Percentage of the requests completed within given times
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
--------------------------------------------------------------------------------------------------------------------------------------------
GET / 1 45 45 45 45 45 45 45 45 45
--------------------------------------------------------------------------------------------------------------------------------------------
Total 1 45 45 45 45 45 45 45 45 45
展示了一些常规的响应时间,TPS,正确率的基础信息。更多的应用和探索待继续。主要计划按平时的性能测试应用场景看如何用locust解决。