Python 性能测试 Locust 实例

安装 Locust

https://blog.csdn.net/mshxuyi/article/details/105492814

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/

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

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

  • Type   :请求的类型,如GET/POST;
  • Name      :请求的路径;
  • request    :已发出请求数量;
  • fails          :请求失败的数量;
  • Median    :响应时间的中间值(单位:毫秒);
  • Average  :平均响应时间(单位:毫秒);
  • Min         :请求的最小响应时间(单位:毫秒);
  • Max        :请求的最大响应时间(单位:毫秒);
  • Content Size:单个请求的大小(单位:字节);
  • reqs/sec:每秒钟请求的个数;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值