7.httprunner-pytest风格用例
- py文件名以test_开头或者_test结尾
- 函数名以test_开头
- 类名以Test开头,并且不能有init初始化方法
- 所有的包pakege必须有_init_.py文件
base_url:base_url 指定
variables:全局变量指定
export:指定导出的测试用例会话变量暴露出来设为全局变量
#导包
from httprunner import HttpRunner # httprunner类,测试基类
from httprunner import Config #config类
from httprunner import Step # 用例步骤
from httprunner import RunRequest #请求
from httprunner import RunTestCase # 引入测试用例
#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是链式调用,类传入用例名称,其余的直接调用对应方法
'''
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不正确')
)
]

#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})

from .publish_test import TestCasePublish # 导入要引入的用例类 #在步骤中引入
Step(
RunTestCase("step-登录")
.call(TestCasePublishstatus) # 导入用例类
.export(*['uid']) #要提取的变量 )
7.httprunner-pytest风格用例的更多相关文章
- Pytest执行用例报Hint: make sure your test modules/packages have valid Python names.
近日,使用Pytest+Appium 实现APP端UI自动化,遇到Pytest收集用例失败的情况. 报错信息如下: test_room.py:None (test_room.py) ImportErr ...
- pytest 给用例打标签
1.给用例添加自定义标签命令:@pytest.mark.tagname #tagname是自定义的标签名 import pytest class TestClass(): @pytest.ma ...
- pytest执行用例时从conftest.py抛出ModuleNotFoundError:No module named 'XXX'异常的解决办法
一.问题描述 在项目根目录下执行整个测试用例,直接从conftest.py模块中抛出了ModuleNotFoundError:No module named 'TestDatas'的异常: 二.解决方 ...
- pytest执行用例:明明只写了5个测试用例, 怎么收集到33个!?
pytest收集测试用例的顺序: 同一个项目中搜索所有以test_开头的测试文件.test_开头的测试类.test_开头的测试函数 执行测试用例的顺序: 是按照先数据(0~9)>再字母(a~z) ...
- pytest 失败用例重试
https://www.cnblogs.com/jinzhuduoduo/articles/7017405.html http://www.lxway.com/445949491.htm https: ...
- pytest之收集用例规则与运行指定用例
前言 上篇文章相信大家已经了解了pytest在cmd下结合各种命令行参数如何运行测试用例,并输出我们想要看到的信息.那么今天会讲解一下pytest是如何收集我们写好的用例?我们又有哪些方式来运行单个用 ...
- Pytest权威教程26-示例和自定义技巧
目录 示例和自定义技巧 返回: Pytest权威教程 示例和自定义技巧 这是一个(不断增长的)示例列表.如果你需要更多示例或有疑问,请联系我们.另请参阅包含许多示例代码段的 综合文档.此外,stack ...
- Pytest学习笔记(二) 用例执行规则
在用pytest执行用例时,可以按照如下场景来执行 1.执行目录及其子目录下的所有用例 pytest filename\ 2.执行某一个py文件下的用例 pytest filename.py 3.-k ...
- pytest文档32-allure描述用例详细讲解
前言 pytest+allure是最完美的结合了,关于allure的使用,本篇做一个总结. allure报告可以很多详细的信息描述测试用例,包括epic.feature.story.title.iss ...
随机推荐
- 字符编码和python中的文件处理
字符编码与python文件处理 ---------------- 字符编码 1.常见的编码 ASCII: 美国人发明的,只编码英文字母和符号,1个字节. GB2312: 中国人发明的,增加了中文汉字和 ...
- Excel 运算符(三):文本连接符
文本连接符&用来合并文本串.比如,连接"计算机"和"基础"两个文本串:"计算机基础"&"基础",最终结果 ...
- 妙啊!纯 CSS 实现拼图游戏
本文,将向大家介绍一种将多个 CSS 技巧运用到极致的技巧,利用纯 CSS 实现拼图游戏. 本技巧源自于 Temani Afif 的 CodePen CSS Only Puzzle game.一款完全 ...
- PerfView专题 (第九篇):洞察 C# 中的 LOH 内存碎片化
一:背景 在 内存泄漏 的系列问题中,有一类问题是 内存碎片化 导致的,而且这种更容易发生在 LOH 上,因为它默认不开启 对象压缩,一般遇到这种情况,优先让朋友执行下面的代码应急. GCSettin ...
- [多校 NOIP 联合模拟 20201130 T4] ZZH 的旅行(斜率优化dp,启发式合并,平衡树)
题面 题目背景 因为出题人天天被 ZZH(Zou ZHen) 吊打,所以这场比赛的题目中出现了 ZZH . 简要题面 数据范围 题解 (笔者写两个log的平衡树和启发式合并卡过的,不足为奇) 首先,很 ...
- laravel框架中验证后在页面提示错误信息
{{-- 显示错误信息 判断:如果有错误则进行显示,--}} {{-- 通过$errors->any() 获取是否有错误,如果有则返回布尔值true,没有返回布尔值false--}} @if($ ...
- C# Hashtable VS. Dictionary 性能对比
Hashtable VS Dictionary 因为Hashtable的Key和Value都是object类型,所以在使用值类型的时候,必然会出现装箱和拆箱的操作,因此性能肯定是不如Dictionar ...
- Android平台Camera2数据如何对接RTMP推流到服务器
1. Camera2架构 在Google 推出Android 5.0的时候, Android Camera API 版本升级到了API2(android.hardware.camera2), 之前使用 ...
- 【Vue学习笔记】—— vuex的语法 { }
学习笔记 作者:o_Ming vuex Vuex ++ state ++ (用于存储全局数据) 组件访问 state 中的全局数据的方式1: this.$store.state.全局数据 组件访问 s ...
- 论文解读(RvNN)《Rumor Detection on Twitter with Tree-structured Recursive Neural Networks》
论文信息 论文标题:Rumor Detection on Twitter with Tree-structured Recursive Neural Networks论文作者:Jing Ma, Wei ...