安装 Locust


1、实例代码 

   locust 通过 client 属性来使用 Python requests 库的所有方法

      UserBehavior类继承TaskSet类,用于描述用户行为:

  • 使用@task装饰的方法为一个事务,方法的参数用于指定该行为的执行权重,参数越大每次被用户执行的概率越高,默认为1
  • on_start():每个locust用户执行测试事务之前执行一次,用于做初始化的工作,如登录;

  WebsiteUser类用于设置性能测试属性:

  • host:要加载主机的URL,通常是在命令行启动locust时使用 --host 选项指定
  • task_set:指向定义的一个用户行为类;
  • wait_time:模拟用户在执行每个任务之间等待的时间
from locust import HttpUser, TaskSet, task, between
import json

class UserBehavior(TaskSet):

def on_start(self):
self.login()
self.headers = {
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/json;charset=UTF-8',
'Authorization': 'Bearer '+self.token
}

def login(self):
post_url = '/hr/api/auth/v1/login'
payload = {
'username':'000000',
'password':'fa550fc8b20ac44adbd3a45b56a907890c533378'
}
s = json.dumps(payload)
header={
'Accept-Encoding':'gzip, deflate',
'Content-Type':'application/json;charset=UTF-8'
}

r = self.client.post(post_url, data=s, headers=header)

# 获取 token
self.token = r.json()['data']['token']


@task(2)
def emp_list(self):
post_url = '/hr/api/employee/baseInfo/list?dp=1'
payload = {
'phone': '',
'pageNo': '1',
'pageSize': '15'
}
s = json.dumps(payload)

self.client.post(post_url, data=s, headers=self.headers)

class WebsiteUser(HttpUser):
task_set = [UserBehavior]
wait_time = between(3, 6)
host = "http://192.168.1.111:7878"

if __name__ == '__main__':
import os
# 有图形
os.system('locust -f Test1.py --host="192.168.1.111:7878"')
# 无图形,设置运行时间,峰值并发,每秒启动人数
# os.system('locust -f Test1.py --headless --host="h192.168.1.111:7878" --run-time=1m -u 100 -r 10')

2、启动成功后,可以打开 web 界面查看

​http://localhost:8089/​

Python 性能测试 Locust 实例_json

Number of users to simulate :设置模拟并发用户数

Hatch rate(users spawned/second) :每秒产生(启动)的虚拟用户数

Python 性能测试 Locust 实例_初始化_02

  • Type   :请求的类型,如GET/POST;
  • Name      :请求的路径;
  • request    :已发出请求数量;
  • fails          :请求失败的数量;
  • Median    :响应时间的中间值(单位:毫秒);
  • Average  :平均响应时间(单位:毫秒);
  • Min         :请求的最小响应时间(单位:毫秒);
  • Max        :请求的最大响应时间(单位:毫秒);
  • Content Size:单个请求的大小(单位:字节);
  • reqs/sec:每秒钟请求的个数;