为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()
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进程退出时触发;


python locust 性能测试:HOOKS<钩子方法>的更多相关文章

  1. Python Locust性能测试框架实践

    [本文出自天外归云的博客园] Locust的介绍 Locust是一个python的性能测试工具,你可以通过写python脚本的方式来对web接口进行负载测试. Locust的安装 首先你要安装pyth ...

  2. python locust 性能测试:locust安装和一些参数介绍

    安装参考 https://www.cnblogs.com/fnng/p/6081798.html <虫师大大的,很详细> ps:python3.7暂不支持locust:python3安装建 ...

  3. python locust 性能测试:locust 关联---提取返回数据并使用

    from locust import HttpLocust, TaskSet, taskimport jsonfrom common import readConfig class UserBehav ...

  4. python locust 性能测试:HttpSession

    官网解释:用于在请求之间执行Web请求和保留(会话)cookie的类(以便能够登录和退出网站):记录每个请求,以便locust可以显示统计信息: from locust import TaskSet, ...

  5. python locust 性能测试:locust 参数化(list) ---循环取数据,数据可重复使用

    from locust import TaskSet, task, HttpLocust class UserBehavior(TaskSet): def on_start(self): # 当模拟用 ...

  6. python locust 性能测试:嵌套

    TaskSet类和TaskSequence类可用于嵌套<可以在TaskSequences中嵌套TaskSets,反之亦然>: from locust import TaskSet, tas ...

  7. python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据

    from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...

  8. python locust 性能测试:locsut参数化-保证并发测试数据唯一性,不循环取数据

    from locust import TaskSet, task, HttpLocustimport queue class UserBehavior(TaskSet): @task def test ...

  9. Python locust性能测试框架模板

    locust框架模板 from locust import HttpLocust, TaskSet, task import Queue class UserBehavior(TaskSet): de ...

随机推荐

  1. phpstorm设置篇

    1.设置全局字体编码: File->settings->Editor->File Encodings 进入这个页面后,有个Global Encoding , 默认是 UTF8 ,如果 ...

  2. github第一次引用开源的库

    想要使用这个一个东西 第一步就是在中添加上面那句话. 这个应该是俩种使用方法,一种用于java中一个用作控件引用 此时就能使用我们引用的这个库了.

  3. 转 mysql Next-Key Locking

    原文:http://dev.mysql.com/doc/refman/5.5/en/innodb-next-key-locking.html 14.5.2.5 Avoiding the Phantom ...

  4. thinkphp实现like模糊查询实例

    原网址:https://www.jb51.net/article/56846.htm

  5. PPT领取 | 70+数据科学、架构演进等最佳实践限时放送

    上世纪1950年人工智能被提出,直至2016年AlphaGo战胜世界围棋冠军李世石后,人工智能迅速引起了全球的瞩目,并推动起全球科技的浪潮.自动驾驶.人脸识别.语音交互技术等“一拥而上”,众多AI科技 ...

  6. Python全栈-magedu-2018-笔记9

    第三章 - Python 内置数据结构 封装和解构 封装 将多个值使用逗号分割,组合在一起 本质上,返回一个元组,只是省掉了小括号 python特有语法,被很多语言学习和借鉴    t1 = (1,2 ...

  7. Python解析Xmind工具

    使用Xmind写用例 使用Python解析Xmind,统计用例个数 代码: from xmindparser import xmind_to_dict import tkinter as tk fro ...

  8. mysql查询两个日期之前相隔的天数

    select timestampdiff(SECOND,'2011-09-25 23:23:13','2011-09-26 22:23:11'); 其中SECOND同样可以改为HOUR,MINUTE

  9. spring 相关注解详情(一)

    1.@controller 控制器(注入服务) 用于标注控制层,相当于struts中的action层2.@service 服务(注入dao) 用于标注服务层,主要用来进行业务的逻辑处理3.@repos ...

  10. 获取本机IP地址的方法

    public class Test { public static void main(String[] strings) { try { InetAddress candidateAddress = ...