python locust 性能测试:HOOKS<钩子方法>
为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_file def 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_quitting class 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": "",
"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 = WebUser
max_wait = 6000
min_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()





python locust 性能测试:HOOKS<钩子方法>的更多相关文章
- Python Locust性能测试框架实践
[本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...
- python locust 性能测试:locust安装和一些参数介绍
安装参考 https://www.cnblogs.com/fnng/p/6081798.html <虫师大大的,很详细> ps:python3.7暂不支持locust:python3安装建 ...
- python locust 性能测试:locust 关联---提取返回数据并使用
from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig class UserBehav ...
- python locust 性能测试:HttpSession
官网解释:用于在请求之间执行Web请求和保留(会话)cookie的类(以便能够登录和退出网站):记录每个请求,以便locust可以显示统计信息: from locust import TaskSet, ...
- python locust 性能测试:locust 参数化(list) ---循环取数据,数据可重复使用
from locust import TaskSet, task, HttpLocust class UserBehavior(TaskSet): def on_start(self): # 当模拟用 ...
- python locust 性能测试:嵌套
TaskSet类和TaskSequence类可用于嵌套<可以在TaskSequences中嵌套TaskSets,反之亦然>: from locust import TaskSet, tas ...
- python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据
from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...
- python locust 性能测试:locsut参数化-保证并发测试数据唯一性,不循环取数据
from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...
- Python locust性能测试框架模板
locust框架模板 from locust import HttpLocust, TaskSet, task import Queue class UserBehavior(TaskSet): de ...
随机推荐
- mobile_轮播图_style_left 版本
mobile 轮播图 小圆点逻辑(排他) 1. 统一给所有 span 元素加 class=""; 2. 切换到谁,谁的 class="active"; 移动端轮 ...
- vue菜鸟从业记:完成项目最后一公里之真机测试和打包上线
最近我朋友王小闰他们公司的项目开发已经进入收尾阶段,前后端并行开发的差不多了,联调也调过了,上篇文章里也讲到了,所谓联调,就仿佛在说“我也不知道我的接口文档写的对不对,我们验证一下吧?我也不知道我的数 ...
- vue菜鸟从业记:公司项目里如何进行前后端接口联调
最近我的朋友王小闰进入一家新的公司,正好公司项目采用的是前后端分离架构,技术栈是王小闰非常熟悉的vue全家桶,后端用的是Java语言. 在前后端开发人员碰面之后,协商确定好了前端需要的数据接口(扯那么 ...
- App拉起小程序提示跳转失败
App拉起小程序提示跳转失败 req.userName = "gh_8afldfalsejw"; // 小程序的原始ID,注意不是Appid
- 如何从日期对象python获取以毫秒(秒后3位小数)为单位的时间值?
要在python中,要获取具有毫秒(秒后3位小数)的日期字符串,请使用以下命令: %f 显示毫秒 import datetime # 获得当前时间 now=datetime.datetime.now( ...
- 如何查询注册表的值及 Powershell 应用
利用 c:\windows\system32\reg.exe 的 query 参数即可. reg.exe 的参数如下: C:\windows\system32> reg.exe /?REG Op ...
- Win64/Linux 上PyMouse安装
目录 windows64安装Pymouse Linux安装 PyMouse ubuntu PyMouse用法 windows64安装Pymouse 只安装PyMouse,会提示缺少相应的组键. 找到安 ...
- [strongswan][autoconf][automake][cento] 在CentOS上编译strongswan git源码时遇到的autoconf问题
编译strongswan的git源码问题 1. 概述 首先,我们想要通过源码编译strongswan.当满足以下条件时,通常你会遇见此问题: 源码时通过git clone的得来的,而不是官网下载的源码 ...
- Express全系列教程之(八):session的基本使用
一.关于session session是另一种记录客户状态的机制,与cookie保存在客户端浏览器不同,session保存在服务器当中:当客户端访问服务器时,服务器会生成一个session对象,对象中 ...
- python-装饰器实现pv-uv
python-装饰器实现pv-uv 网站流量统计可以帮助我们分析网站的访问和广告来访等数据,里面包含很多数据的,比如访问试用的系统,浏览器,ip归属地,访问时间,搜索引擎来源,广告效果等.原来是一 ...