Python性能测试--simple_pref_test

simple_pref_test是lljz-tools包中的一个模块

安装

pip install lljz-tools 

使用简介

1、函数模式

以下为最基础的用法

import requests 
from lljz_tools.simple_pref_test import PrefRunner, task

@task
def get_baidu():
	resp = requests.get('http://www.baidu.com)
	assert resp.status_code == 200
	
if __name__ == '__main__':
    PrefRunner(
        '性能测试', 
        virtual_users=5, user_add_interval=0.1,  # 5个线程,每隔0.1秒启动1个线程,与pre_task参数互斥
        # pre_task=5,  # 每秒固定执行5个任务,与virtual_users、user_add_interval参数互斥
        run_seconds=10
    ).start()

实际上只要给任意个函数增加@task装饰器,那么这个函数就自动被识别为性能测试任务。

task装饰器也可以包含参数,

@task('获取百度页面', weight=1)
def get_baidu():
	resp = requests.get('http://www.baidu.com)
	assert resp.status_code == 200

第一个参数为任务名称,会在最终的测试报告中显示出来(没有指定名称的任务默认取函数名称),weight参数表示任务权重,当包含多个任务时,会按照权重随机选择执行一个任务。

默认情况下,我们无法控制任务的执行顺序,因为任务每次都是随机执行。当需要将多个任务严格按照顺序执行时,则可以采用@mark_task标记一个顺序任务

from lljz_tools.simple_pref_test import task, mark_task

@mark_task
def my_task():

	@task('获取订单')  
	def get_order() -> int:
		reps = requests.get('http://127.0.0.1:5000/get?orderNo=123')
		assert reps.status_code == 200 
		return reps.json()['id']
	
	@task('审核订单')
	def audit_order(order_id: int) -> None:
		reps = requests.post('http://127.0.0.1:5000/audit', json={'orderId': order_id})
		assert reps.status_code == 200 
	
	order_id = get_order()
	audit_order(order_id)

@mark_task也适用于需要更精确的记录请求耗时的场景

from lljz_tools.simple_pref_test import task, mark_task

@task  
def t1(): 
	# 该任务统计耗时会计算整个函数执行耗时,如果get_order_from_db耗时较长,则会对结果产生较大的影响
	# (一般非IO型的步骤执行耗时远远低于IO耗时,因此无需担心最终统计的任务耗时准确性)
	order = get_order_from_db()
	reps = requests.post('http://127.0.0.1:5000/audit', json={'orderId': order.id})
	assert reps.status_code == 200 

@mark_task
def t2():
	# 将不需要统计耗时的步骤单独配置
	order = get_order_from_db()
	
	@task  
	def audit_order(order_id: int) -> None:
		# 最终任务只会记录audit_order的函数执行耗时
		reps = requests.post('http://127.0.0.1:5000/audit', json={'orderId': order_id})
		assert reps.status_code == 200 
	
	audit_order(order.id)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值