在autoTestSchem内只需要定义了如下参数,即可使用requestBase类发送请求
# config/test.toml
[test.request]
base_url = "https://www.baidu.com"
api = [['api', 'userapi', 'common'], ['api', 'userapi', 'au']]
config定义说明
base_url:网址 api:api目录,可支持多个目录,如定义根目录下api/userapi/common,填入[‘api’, ‘userapi’, ‘common’]即可
requestBase类方法说明:
class requestBase(object):
def set_session(self, client):
# 设置客户端,locust压测时初始化使用
def get_api(self, api_id):
"""
根据api_id获取api数据,返回request类,该类可直接传入execute方法进行运行
""""
def execute(self, request):
"""
发送请求
:param request: 请求题
""""
def register_setup_hook(self, hook):
"""
注册前置钩子
""""
def register_teardown_hook(self, hook):
"""
注册后置钩子
:param hook:
:return:
"""
def close_hook(self):
"""
关闭钩子执行,在钩子内调用请求的时候需要使用到,记得使用完成后开启钩子
:return:
"""
def open_hook(self):
"""
开启钩子执行
:return:
"""
HOOK说明
当注册了hook之后,每次发送请求的时候都会去调hook,并传入一些对应参数,传参说明
- request
- 可选入参,用来获取并修改参数
- session
- 可选入参,返回的是一个requests.Request类,用于获取session,token等内容
- kwargs
- 可选入参,返回的是一个dict,包含我们在config内传入的所有参数
举例
from autoTestScheme.case import Base
class TestBase(Base):
def setup_class(self):
if self.settings.exists('request'):
self.settings.request.register_setup_hook(self.test1)
self.settings.request.register_setup_hook(self.test2)
self.settings.request.register_setup_hook(self.test3)
@classmethod
def test1(self):
self.logger.info('test1')
@classmethod
def test2(self, request, session, kwargs):
request['params']['c_token'] = session.cookies.get("c_token")
@classmethod
def test3(self, request, session, kwargs):
self.logger.info(kwargs)
注意1:hook是一个方法,当在类内的时候,方法如下
class TestBase(Base):
def setup_class(self):
if self.settings.exists('request'):
self.settings.request.register_setup_hook(self.test1)
@classmethod
def test1(self):
self.logger.info('test1')
# 调用类方法形式
self.send_msg(self, 123)
self.send_msg1(123)
def send_msg(self, msg):
print(msg)
@classmethod
def send_msg1(self, msg):
print(msg)
注意2:hook的注册尽量不要放到pytest类的setup内,兼容问题