为locust中不同类型的事件,提供的钩子方法;

from locust import TaskSet, task, events, Locust
from locust.clients import HttpSession
import subprocess
import random, traceback
from common.sec_encrypt import AESEncrypt, md5_time
from common import read_config
from common.logger import print_filedef on_request_success(request_type, name, response_time, response_length):print_file('success  Type: {}, Name: {}, Time: {}ms, length: {}'.format(request_type, name, response_time,response_length))def on_request_failure(request_type, name, response_time, exception):print_file('failure  Type: {}, Name: {}, Time: {}ms, exception: {}'.format(request_type, name, response_time,exception))def on_locust_error(locust_instance, exception, tb):print_file("error  locust_instance: {}, exception: {}, traceback: {}".format(locust_instance, exception,traceback.format_tb(tb)))def on_hatch_complete(user_count):print_file("User  Locust have generate {} users".format(user_count))def on_quitting():print_file("Locust is quiting!")events.request_success += on_request_success
events.request_failure += on_request_failure
events.locust_error += on_locust_error
events.hatch_complete += on_hatch_complete
events.quitting += on_quittingclass WebUser(TaskSet):def on_start(self):self.session = HttpSession('http://localhost:8000/api')self.r = random.randint(10000, 99999)@task(2)def user_auth(self):"""用户认证"""auth_user = ('lixiaofeng', 'fengzi802300')res = self.session.get('/sec_get_event_list/', params={'eid': self.r}, auth=auth_user,name='/sec_get_event_list/?eid=[eid]')print_file(res.json())# assert res.json()['status'] == 200, '用户认证接口请求失败!'
@task(1)def aes_api(self):payload = {'name': '187187011{}'.format(self.r)}# 加密encodeed = AESEncrypt(payload).encrypt_data()# print(encodeed)res = self.session.get('/sec_get_guest_list/', params={'data': encodeed},name='/sec_get_guest_list/?data=[aes]')print_file(res.text)# assert res.json()['status'] == 200, 'AES接口加密请求失败!'
@task(2)def md5_api(self):payload = {"eid": "{}".format(self.r), "name": "一加8手机发布会{}".format(str(self.r)), "limit": 2000, "status": "1","address": "深圳宝体会展中心","start_time": "2019-09-15 22:40:00", 'time': '', 'sign': ''}payload = md5_time(payload)res = self.session.post('/sec_add_event/', data=payload, name='/sec_add_event/?data=[md5]')print_file(res.text)# assert res.json()['status'] == 200, 'md5接口加密请求失败!'
@task(2)def add_guest(self):"""添加嘉宾"""payload = {'eid': '{}'.format(self.r), 'realname': '赵小刀{}'.format(self.r),'phone': '187011{}'.format(self.r),'email': '187011{}@163.com'.format(self.r)}res = self.session.post('/add_guest/', data=payload, name='/add_guest/?data=[payload]')print_file(res.text)class Run(Locust):# host = 'http://localhost:8000/api'task_set = WebUsermax_wait = 6000min_wait = 3000# 'locust -f D:\Interface_framework_Beauty\locust_files\locust_api.py --no-web -c 100 -r 10 --run-time {}s'.format(read_config.time)
def run():subprocess.check_call('locust -f G:\Interface_framework_pytest\locust_files\\locust_test.py --no-web -c 1000 -r 100 --run-time {}s'.format(read_config.time))if __name__ == '__main__':run()

1.request_success 成功完成请求后触发;
参数:
request_tye:请求类型;
name:被调用url路径;
response_time:响应时间,ms;
response_length:响应内容长度;
2.request_failure 请求失败时触发;

参数:
request_tye:请求类型;
name:被调用url路径;
response_time:响应时间,ms;
exception:抛出的异常;

3.locust_eror 在执行locust类内发生异常时触发;
参数:
locust_instance:发生异常的locust实例;
exception:抛出的异常;
tb:回溯的对象;

4.hatch_complete 生成所有locust用户时触发;
参数:
user_count:生成的用户数;

5.quitting locust进程退出时触发;

转载于:https://www.cnblogs.com/changqing8023/p/10205038.html

python locust 性能测试:HOOKS钩子方法相关推荐

  1. python locust 能压测数据库_python locust 性能测试:HOOKS钩子方法

    为locust中不同类型的事件,提供的钩子方法: from locust import TaskSet, task, events, Locust from locust.clients import ...

  2. Python+locust性能测试(一),进军高阶测试......

    前言 Locust是使用Python开发的支持分布式的一款开源压力测试工具,Locust在测试时,会产生大量的用户对系统进行访问,每个用户的行为是通过Python代码控制的,并且整个测试过程可以在We ...

  3. python+locust性能测试学习笔记

    前言 Locust(俗称 蝗虫)一个轻量级的开源压测工具,基本功能是用Python代码描述所有测试.不需要笨拙的UI或庞大的XML,只需简单的代码即可. 环境安装 Locust支持Python 2.7 ...

  4. 性能测试框架——python+locust

    目录 性能测试测试点 指标体系 用户数 监控windows系统指标 使用Python监控系统资源 安装和使用 安装 代码模板 问题处理 locust启动参数 性能测试测试点 分类:负载测试.压力测试. ...

  5. pythonlocust使用方法_python locust 性能测试:locust安装和一些参数介绍

    安装参考 https://www.cnblogs.com/fnng/p/6081798.html ps:python3.7暂不支持locust:python3安装建议克隆github上的项目 可能需要 ...

  6. python locust api_性能测试工具--Locust官方文档(API)解读(全)

    文章略长Locust学习笔记汇总 若有错误,请指正 内容以官网为准https://locust.io/ Locust简介 Locust是什么? Locust是一个简单易用的分布式用户负载测试工具.它用 ...

  7. python服务器性能测试工具locust使用指南

    文章目录 前言 安装 基本使用 User类 @task装饰器 任务间隔 @tag装饰器 前置与后置 HttpUser类 常用参数 命令行配置 配置文件配置 常用压测场景实战 高用户高并发场景压测 每个 ...

  8. 基于python的性能测试工具–locust

    基于python的性能测试工具–locust  https://www.cnblogs.com/chunyanxu/p/8732720.html 性能测试工具Locust https://www.cn ...

  9. python locust最新版_python locust 性能测试:locust安装和一些参数介绍

    安装参考 https://www.cnblogs.com/fnng/p/6081798.html ps:python3.7暂不支持locust:python3安装建议克隆github上的项目 可能需要 ...

最新文章

  1. IDEA+Maven+Springboot:invalid bound statement (not found) 解决办法
  2. 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]
  3. adnroid string拼接_Android开发中string.xml文件中字符串的拼接
  4. bloomberg用法 固定收益_内部收益率的用法浅谈某保险的真实收益率
  5. linux组的管理命令,linux 用户和组管理命令(示例代码)
  6. 核心指导网络由任务编码器_指导新编码员的最佳做法
  7. 聚焦LS-MIMO的四大层面,浅谈5G关键技术
  8. 如何从列表中删除第一个项目?
  9. java session.load_java – 了解hibernate中的session.get vs session.load方法
  10. 数据太大的时候,R语言如何读取?
  11. Python del:删除对象
  12. JAVA 滑块拼图验证码
  13. Android开发之EditText属性详解
  14. 最新借条模板,如何写
  15. 【Unity 框架】QFramework v1.0 使用指南 架构篇:05. 引入 Utility | Unity 游戏框架 | Unity 游戏开发 | Unity 独立游戏
  16. 领取1024节日勋章(程序员必看)
  17. 【1.6万字】连续抓屏保存为Gif动图 【keyboard库、PIL库、imageio库和pygifsicle库 探索】
  18. Linux关闭/禁用触摸屏,deepin关闭/禁用触摸屏方法
  19. 汇总: 机器学习术语表
  20. 【C语言程序设计】实验 12

热门文章

  1. ssh传输越多越慢_Linux下分析网站访问慢原因
  2. android eclipse不能创建activity,在eclipse里面开发android应用,不能新建Activity
  3. linux取消头文件链接,【原创】Linux下编译链接中常见问题总结
  4. java thread.notify_Java Thread notify()方法
  5. SpringSecurity Form Login
  6. vue.js v-model
  7. docker image
  8. echarts line
  9. 如何获取filecoin_【IPFSFilecoin】Filecoin矿机厂商排名?如何选择?哪家公司靠谱?...
  10. 项目管理学习总结(16)——如何突破技术管理