[TOC]
## 快速入门
下面是一个简单的`locustfile.py`小示例:
注意:如果locust版本是1.2.2类继承又会有变化
```
from locust import HttpLocust, TaskSet
def (l):
l.client.post("/login", {"username":"ellen_key", "password":"education"})
def index(l):
l.client.get("/")
def profile(l):
l.client.get("/profile")
class UserBehavior(TaskSet):
tasks = {index: 2, profile: 1}
def on_start(self):
login(self)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
min_wait = 5000
max_wait = 9000
```
在这里,我们定义了许多`Locust`任务,它们是带有一个参数(`Locust`类实例)的普通 Python 可调用对象。这些任务收集在 task 属性中的`TaskSet`类下 。然后,我们有一个代表用户的 类,其中定义了模拟用户在执行任务之间应等待的时间,以及 应该定义用户的“行为”的类。 类可以嵌套。`Http``Locust``TaskSetTaskSet`
在`HttpLocust`从类继承`Locust`的类,并把它添加一个客户端属性,它是的一个实例`HttpSession`,可用于使`HTTP`请求。
默认情况下,我们不再寻找代理设置以提高性能。如果您确实希望测试请求通过 HTTP 代理,则可以从`HttpLocust`该类继承,并将 trust\_env 字段设置为 True。有关更多详细信息,请参阅请求文档。
<br>
UserBehavior 类继承 TaskSet 类,用于描述用户行为。
baidu\_index() 方法表示一个用户为行,访问百度首页。使用 @task 装饰该方法为一个事务。client.get() 用于指请求的路径“/”,因为是百度首页,所以指定为根路径。
WebsiteUser 类用于设置性能测试。
* task\_set :指向一个定义的用户行为类。
* min\_wait :执行事务之间用户等待时间的下界(单位:毫秒)。
* max\_wait :执行事务之间用户等待时间的上界(单位:毫秒)。
<br>
<br>
## 启动 Locust
要使用上述 Locust 文件运行 Locust,如果该文件名为`locustfile.py`且位于当前工作目录中,则可以运行:
~~~
$ locust --host=http://example.com
~~~
如果 Locust 文件位于子目录下和 / 或名称不同于`locustfile.py`,请使用`-f`以下命令指定它:
~~~
$ locust -f locust_files/my_locust_file.py --host=http://example.com
~~~
要运行跨多个进程分布的 Locust,我们可以通过指定`--master`以下内容启动主进程 :
~~~
$ locust -f locust_files/my_locust_file.py --master --host=http://example.com
~~~
然后我们将启动任意数量的从属进程:
~~~
$ locust -f locust_files/my_locust_file.py --slave --host=http://example.com
~~~
如果要在多台计算机上运行 Locust 分布式服务器,则在启动从属服务器时也必须指定主服务器主机(在单台计算机上运行 Locust 时不需要,因为主服务器主机默认为 127.0.0.1):
~~~
$ locust -f locust_files/my_locust_file.py --slave --master-host=192.168.0.100 --host=http://example.com
~~~
<br>
<br>
## 打开 Locust 的 Web 界面
使用上述命令行之一启动 Locust 后,应该打开浏览器并输入`http://127.0.0.1:8089`(如果在本地运行 Locust)。
然后,您应该会看到类似以下内容:
![](https://img.kancloud.cn/af/77/af777e5a155281809137abdb4da97b69_1428x686.png)
* 设置用户总数10个,每秒启动5个
| 页面指标 | 解析 | 备注 |
| --- | --- | --- |
| type | 请求类型 | |
| Name | 请求名称 | 这个可以自定义,传name参数即可 |
| Requests | 当前已完成的请求数量 | |
| Fails | 失败的请求数量 | |
| Requests | 当前已完成的请求数量 | |
| Median | 响应时间的中间值,即50%的响应时间在这个数值范围内,单位为毫秒 | |
| 90%ile | 90%的响应时间在正态分布平均值下方,即小于这个值 | |
| Min | 最小响应时间,单位为毫秒 | |
| Max | 最大响应时间,单位为毫秒 | |
| average Size | 平均每个请求的数据量,单位为字节 | |
| current RPS | 每秒钟处理请求的数量 |
![](https://img.kancloud.cn/da/25/da25a2e3a65579ee9005096ede863908_1629x503.png)