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 ...
随机推荐
- 点击>>>解锁Apache Hadoop Meetup 2021!
" 10月16日,属于开源发烧友的狂欢日来啦! Apache Hadoop Meetup 2021 开源大数据行业交流盛会盛大开启!让我们相约北京,一起嗨翻初秋~ 在当今信息化时代,逐渐成熟 ...
- 延时任务-基于redis zset的完整实现
所谓的延时任务给大家举个例子:你买了一张火车票,必须在30分钟之内付款,否则该订单被自动取消.订单30分钟不付款自动取消,这个任务就是一个延时任务. 我之前已经写过2篇关于延时任务的文章: <完 ...
- Qt Q_OBJECT编译问题
编译问题 添加Q_OBJECT后需要qmake 多重继承 添加了Q_ENUM之类的宏,就需要Q_OBJECT 添加了Q_OBJECT,就需要类继承自QObject 如果有多重继承关系,QObject一 ...
- KingbaseES R6 集群repmgr.conf参数'recovery'测试案例(二)
案例二:测试'recovery = automatic' 1.查看集群节点状态信息: [kingbase@node1 bin]$ ./repmgr cluster show ID | Name | R ...
- Golang 随机淘汰算法缓存实现
缓存如果写满, 它必须淘汰旧值以容纳新值, 最近最少使用淘汰算法 (LRU) 是一个不错的选择, 因为你如果最近使用过某些值, 这些值更可能被保留. 你如果构造一个比缓存限制还长的循环, 当循环最后的 ...
- URL slug是什么?
URL slug是什么? URL slug是 URL 中最后一个反斜杠之后的部分. 为什么slug 对 SEO 很重要? slug 对于关键字 SEO 来说非常强大.如果用户要在 Google 搜索& ...
- 以软件定义物联网芯片,以技术融合推动LPWAN2.0泛在物联
作为数字化产业重要的基础设施之一,物联网迎来了黄金发展期.物联网通信技术通过数据的采集.分析.输出,从浅层次的互联工具和产品深化,到成为重塑生产组织方式的基础设施和关键要素,正深刻地改变着传统产业形态 ...
- 9. Ceph 基础篇 - Crush Maps
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247485302&idx=1&sn=00a3a204 ...
- centos使用Yum安装postgresql 13
rpm源安装 yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat ...
- 使用metricbeat监控system和nginx
下载并解压缩metricbeat metricbeat.yml配置文件设置: setup.kibana: host: "192.168.75.21:5601" output.ela ...