一、安装:
1、Locust在PyPI上可用,可以通过pip或easy_install安装:pip install locustio
2、查看Locust可用选项:locust --help
3、在Windows上安装蝗虫在Windows上,运行pip安装locustio应该可以工作。但是,如果没有,很有可能可以通过首先为pyzmq、gevent和greenlet安装预构建的二进制包来修复它。下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/,当你下载了.whl文件后,你 可以通过以下命令安装:pip install name-of-file.whl
补充知识点:增加打开文件的最大数量限制机器上的每个HTTP连接都打开一个新文件(技术上是一个文件描述符)。操作系统可以为可打开的文件的最大数量设置一个低限制。如果限制小于测试中模拟用户的数量,就会发生故障。将操作系统的默认最大文件数量限制增加到 比您希望运行的模拟用户数量更高的数量。如何做到这一点取决于正在使用的操作系统。
注意:在Windows上运行蝗虫应该可以很好地开发和测试负载测试脚本。但是,在运行大规模测试时,建议您在Linux机器上这样做,因为gevent在Windows下的性能很差。
二、大家最关心的是如何使用locust去实战,这一节先说一下基础入门的,下面的代码是完成一个百度的请求性能测试
# -*- coding: utf_8 -*- # locust性能测试 from locust import HttpLocust, TaskSet, task import subprocess import json # 性能测试任务类 TaskSet. class UserBehavior(TaskSet): # 开始 def on_start(self): pass # 任务 @task(10) def getTagVals(self): u""" request_url:请求路径 request_params:请求头参数 request_json:请求json参数 """ request_url = "https://www.baidu.com/" # (待测试的路径) response = self.client.get( url=request_url, ) if response.status_code != 200: print(u"返回异常") print(u"请求返回状态码:", response.status_code) elif response.status_code == 200: print(u"返回正常") # 这里可以编写自己需要校验的返回内容 # content = json.loads(response.content)["content"] # if content["tagKey"] == 25: # print u"校验成功" # print json.dumps(content, encoding="UTF-8", ensure_ascii=False) # 性能测试配置 class MobileUserLocust(HttpLocust): u""" min_wait :用户执行任务之间等待时间的下界,单位:毫秒。 max_wait :用户执行任务之间等待时间的上界,单位:毫秒。 """ # weight = 3 task_set = UserBehavior host = "https://www.baidu.com/" # (待测试的ip或者域名) min_wait = 3000 max_wait = 6000 if __name__ == "__main__": subprocess.Popen("locust -f main_pt.py", shell=True)
RPS是 每秒用户数、FAILUSERS是 失败率