7.httprunner-pytest风格用例
用例设计原则
- py文件名以test_开头或者_test结尾
- 函数名以test_开头
- 类名以Test开头,并且不能有init初始化方法
- 所有的包pakege必须有_init_.py文件
pycharm设置pytest 运行
settings → Tools → Python Integrated Tools → Testing / 将 default test runner 设置为pytest
pytest用例-Config类
config类的方法
base_url:base_url 指定
variables:全局变量指定
export:指定导出的测试用例会话变量暴露出来设为全局变量
pytest用例导包
#导包 from httprunner import HttpRunner # httprunner类,测试基类 from httprunner import Config #config类 from httprunner import Step # 用例步骤 from httprunner import RunRequest #请求 from httprunner import RunTestCase # 引入测试用例
HttpRunner类
#httprunner类源码部分 class HttpRunner(object): config: Config teststeps: List[Step] ... ''' httprunner类的属性config 指向了 Config类,teststeps指向了list里面的Setp '''
#config类源码 class Config(object): def __init__(self, name: Text): self.__name = name # 初始化name变量,传入用例名称 self.__variables = {} # 全局变量 self.__base_url = "" #base_url self.__verify = False #https证书开关 self.__export = [] #全局变量提取 self.__weight = 1 caller_frame = inspect.stack()[1] self.__path = caller_frame.filename ''' 以上初始化变量,除了name是直接传入 其余变量在源码中下方都有对应的同名的函数处理,所有我们用Config类的时候 Config是链式调用,类传入用例名称,其余的直接调用对应方法 '''
pytest用例编写
from httprunner import HttpRunner, Config, Step, RunRequest, RunTestCase # 继承Httprunner类 class TestLogin(HttpRunner): config = (Config('登录用例') # 用例名称 .base_url('https://xxx-xxx.com') # 域名地址 .verify(False) # https验证开关 .variables(**{'user': 'test', 'pwd': 123456}) # 全局变量 .export('token') # 将token设置为全局变量 ) # 测试步骤,是一个list,里面可以有多个步骤用例 teststeps = [ Step( # 每一个step,代表一个用例 # RunRequest类用来发送请求 RunRequest('step-login') # 步骤名称 .post('/') # 请求方式 / 接口地址 .with_data({'username': '$user', 'password': '$pwd'}) # 请求参数 # 返回值提取 .extract() # 返回值使用jmespath表达式提取: 表达式,变量名 .with_jmespath('body.token', 'token') # 断言 .validate() .assert_equal('body.code', 0, message='code不正确') ) ]
RunRequest(测试步骤)
#get请求 .with_params(**{'page':1,'size':2}) #post请求 Content-Type:application/x-www-form-urlencoded .with_data({'page':1,'size':2}) #post请求 Content-Type:application/json .with_json({'page':1,'size':2})
RunTestCase导入用例
from .publish_test import TestCasePublish # 导入要引入的用例类 #在步骤中引入 Step( RunTestCase("step-登录") .call(TestCasePublishstatus) # 导入用例类 .export(*['uid']) #要提取的变量 )
风月都好看,人间也浪漫.