task_set = UserBehavior
min_wait = 3000
max_wait = 6000
UserBehavior类继承TaskSet类,用于描述用户行为。
* `@task`装饰该方法为一个事务,后面的数字表示请求比例,上面的比例为`2:1` 默认都是`1:1`
* `test_users()`方法表示一个用户行为,这里是请求`user`接口。
* `test_groups()`方法表示请求`group`接口。
* `client.get()`用于指定请求的路径。
WebsiteUser类用于设置性能测试。
* `task_set`:指向一个定义的用户行为类。
* `min_wait`:执行事务之间用户等待时间的下界(单位:毫秒)。
* `max_wait`:执行事务之间用户等待时间的上界(单位:毫秒)。
#### 执行测试
使用如下命令开始启动测试
C:\Users\Shuqing>locust -f D:\api_test\locust\restful_api_locust.py --host=http://127.0.0.1:8000
[2018-07-24 15:39:22,917] LAPTOP-8B5JADC8/INFO/locust.main: Starting web monitor at *:8089
[2018-07-24 15:39:22,917] LAPTOP-8B5JADC8/INFO/locust.main: Starting Locust 0.8.1
在浏览器打开`localhost:8089`可以看到如下页面:

* Number of users to simulate:设置模拟用户数。
* Hatch rate(users spawned/second):每秒产生(启动)的虚拟用户数。
* 单击“Start swarming”按钮,开始运行性能测试
运行之后可以看到主界面如下:

性能测试参数如下。
* Type:请求的类型,例如GET/POST。
* Name:请求的路径。
* request:当前请求的数量。
* fails:当前请求失败的数量。
* Median:中间值,单位毫秒,一半的[服务器]( )响应时间低于该值,而另一半高于该值。
* Average:平均值,单位毫秒,所有请求的平均响应时间。
* Min:请求的最小服务器响应时间,单位毫秒。
* Max:请求的最大服务器响应时间,单位毫秒。
* Content Size:单个请求的大小,单位字节。
* reqs/sec:每秒钟请求的个数。
点击 `Charts` 菜单可以查看性能图表

图表含义如下:
* Total Request per Second :每秒的请求数
* Average Response Time: 平均响应时间
* Number of Users: 用户数
### 参数化
#### 测试场景
如果想对如下接口进行并发测试,则可以将`id`进行参数化设置
http://127.0.0.1:8000/groups/1/
http://127.0.0.1:8000/groups/2/
http://127.0.0.1:8000/users/1/
http://127.0.0.1:8000/users/2/
#### 代码实现
locust\_users\_groups.py
from locust import HttpLocust,TaskSet,task
class UserBehavior(TaskSet):
def on_start(self):
#设置user和group参数下标初始值
self.users_index=0
self.groups_index=0
@task
def test_users(self):
#读取参数
users_id=self.locust.id[self.users_index]
url="/users/"+str(users_id)+'/'
self.client.get(url,auth=('51zxw','zxw2018