Python pytest装饰器总结(实例详解)
作者:Mavis保护神 发布时间:2023-06-12 07:15:14
几个常用装饰器
pytest.ini 配置文件 例子:
[pytest]
addopts = -v -s --html=py_test/scripts/report/report.html -p no:warnings --reruns=10
testpaths = ./py_test/scripts
python_files= test_rerun.py
python_classes = Test*
python_function = test*
xfail_strict = true
addopts: OPTS 命令行参数集
-s:表示输出调试信息,包括 print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n :支持多线程或者分布式运行测试用例
如:pytest -vs ./testcase/test_login.py -n 2
--html : 测试报告位置
--reruns : 失败重跑
-p no:warnings : 取消警告
--ff : 先执行上次失败的用例
--lf : 只执行上次失败的用例
-x : 遇到测试用例fail,就结束测试
--maxfail=num:遇到num条测试用例fail, 就结束测试
-k :根据测试用例的部分字符串指定测试用例
如:pytest -vs ./testcase -k “ao”
skipif-跳过测试
跳过测试的使用方法
pytest.skip (用于函数内,跳过测试用例)
def test_2():
if 1 < 2:
pytest.skip('1111111')
pass
@pytest.mark.skip(用于函数外,跳过测试用例)
@pytest.mark.skip(reason='feature not implemented')
def test_1():
pass
# 模块级别跳过。(注:参数allow_module_level的值设为True)
pytest.skip('skip all tests', allow_module_level=True)
@pytest.mark.skipif(用于函数外,条件condition,跳过原因reason="xxx")
@pytest.mark.skipif(condition='1<2',reason='feature not implemented')
def test_1():
pass
ordering-执行顺序
控制用例执行顺序的方法
在需要调整用例执行顺序的函数(或方法)前增加
@pytest.mark.run(order=x) x表示
3.数字数字形式: 小数、整数、负数
执行顺序:
1、由小到大
2、由正到负
3、未标记 的在正数后,负数前执行
顺序: 1,2,3,无标记,-3,-2,-1
xfail-预期失败
xfail-预期失败的函数
语法
xfail(condition, reason)
--condition 预期失败的条件
--reason 预期失败的原因
pytest.ini加参数,
不希望出现 预期失败结果成功 的情况
就在配置文件中添加一个参数:
xfail_strict = true
fixture-函数作参数
fixture用途:可将被fixture标记的函数当作参数使用
掌握一个fixture 实现 setup 和 tearduwn
yield 关键字
yield 后边代码是用例执行完后再执行的。相当于teardown
当用例执行完之后, 会执行yield 后面的代码,但不能 return
addfinalize 关键字
这个实现功能跟yield的一样, 但可以用return,将参数传给后面的用例.
fixture 可放到conftest.py文件下
conftest.py会自动识别 哪个用例调用了这个函数
parametrize-参数化
parametrize(argnames,argvalues)
--argnames : 参数名
--argvalues : 参数值, 数据类型是 list
语法
@pytest.mark.parametrize
@pytest.mark.parametrize("mobile,code", [(121,212),(123,321)])
rerunfailure-失败重跑
失败重跑机制
安装pytest-rerunfailure
在设置文件pytest.ini中添加命令
reruns = 重跑次数
addopts = --reruns=10
链接Mysql
一.环境搭建
对接mysql数据库需要通过第三方库PyMySQl
二.数据库操作
建立数据库连接 :MySQlconnect = pymysql.connect(“数据库地址“,“数据库端口“,”数据库账号“等)
获取操作游标: cursor = MySQlconnect .cursor()
执行SQL语句:cursor .execute(“SQL语句”)
获取一条数据:data = cursor.fetchone()
获取结果(读):cursor.fetchall()
提交更改(写):MySQlconnect .commit()
关闭游标:cursor.close()
关闭连接 :MySQlconnect .close()
来源:https://blog.csdn.net/m0_37890492/article/details/116201942
猜你喜欢
- 首先,大家先去下载一份dvbbs.php beta1的代码,解压后先抛开php代码,找出你的mysql手册,如果没有手册那么就直接看下面的实
- 阅读上一篇教程:WEB2.0网页制作标准教程(9)第一个CSS布局实例如果我们想在3列布局的最后加一行页脚,放版权之类的信息。就遇到必须对齐
- andot提出问题:在做 ajax 编程时,我们常常需要将 xmlhttp 获取到的页面内容通过 innerHTML 来赋给某个容器(比如
- 一般情况下,网站的图片代码是这样的。<img src="./images/test.jpg"
- 我一般看书喜欢做笔记,这份笔记不知道是什么时候看的什么书做的,也忘了是否是摘自其他地方,总之一份汇总,应该适合初学者,对于Javascrip
- 通配符:通配符描述示例%包含零个或更多字符的任意字符串。WHERE title LIKE '%computer%' 将查找处
- 下面给出ORACLE的一种实现方式,要分2步走:1. 建立 SEQUENCE CREATE [ OR REPLACE ] SEQUENCE
- 图片的间隙Q:我有一张大图片,把它切割后在Dreamweaver中进行拼接,可是总是有间隙,不知为什么?A:不知你是否把表格的边距、间距和边
- HTTP头中一般断点下载时才用到Range和Content-Range实体头,Range用户请求头中,指定第一个字节的位置和最后一个字节的位
- iframe的防插与强插(一)中介绍了“市面上”能见到的两种防御被第三方网站iframe的方法,以及相应的变态突破方法。貌似把“受害人”逼上
- 在并不知道DIV浮动层的宽度,高度的情况下,如何使浮动层在任何分辩率的情况下居中呢! 下面使用了JAVASCRIPT来
- 全文索引在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE
- PHP mysqli_rollback() 函数关闭自动提交,做一些查询,提交查询,然后回滚当前事务:<?php// 假定数据库用户名
- 有件东西我观察了很多年,那就是很少有开发者会去使用SQL Server中的一个非常有用的东西——EX
- 有时一些网页对源码进行了加密,我们很难找到类似像“onselectstart="return false"”这样的代码,
- 网站内容的入口很大一部分都是依赖于导航系统,而网站的入口很大一部分依赖于搜索系统,这也在一定意义上证明了导航与搜索之间的重叠性。搜索系统可以
- MySQL是一个跨平台的开源关系型数据库管理系统,是我们常用的最经济实惠的数据库,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特
- 当你连接到MySQL服务器时,你应使用一个密码。密码不以明文在上传输。客户端连接序列中的密码处理在MySQL 4.1.1中已经升级,很安全。
- 代码如下:CREATE TABLE [dbo].[TbGuidTable]( [TableName] [varchar](50) NOT N
- 有时会在存储过程中处理一些XML格式的数据,所以会用到sp_xml_preparedocument,他可以将XML数据进行读取,然后使用 M