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
猜你喜欢
- 话不多说,直接上代码吧!import numpy as npA = np.delete(A, 1, 0) # 删除A的第二行B = np.d
- 什么是结构体结构是表示字段集合的用户定义类型。它可以用于将数据分组为单个单元而不是将每个数据作为单独的值的地方。例如,员工有firstNam
- 以前我浏览博客的时候记得别人说过,BCELoss与CrossEntropyLoss都是用于分类问题。可以知道,BCELoss是Binary
- 赶快记录一下,只是懂皮毛,或许多积累就好了import sysfrom PyQt4 import QtGuiclass MainWindow
- 本文实例讲述了Python基于Pymssql模块实现连接SQL Server数据库的方法。分享给大家供大家参考,具体如下:数据库版本:SQL
- 本文实例讲述了PHP队列用法。分享给大家供大家参考。具体分析如下:什么是队列,是先进先出的线性表,在具体应用中通常用链表或者数组来实现,队列
- 目录前言线程安全锁的作用Lock() 同步锁基本介绍使用方式死锁现象with语句RLock() 递归锁基本介绍使用方式with语句Condi
- 1. 首先是环境的安装 (本人使用的是PyCharm,python3.6)pip3 install PyQt5 (没有指定版本的话,默认会安
- 本文实例为大家分享了python处理大日志文件的具体代码,供大家参考,具体内容如下# coding=utf-8import sysimpor
- sql语句中默认是不区分大小写的,所以语句: Sql代码 SELECT * FROM RecEngineBizInfo WHERE RecE
- 1.加载数据库,数据库的配置不能写死在seting.py文件中,下面的方式是读取另外一个文件,配置数据库:config = '
- tensorflow支持14种不同的类型,主要包括:实数:tf.float32 tf.float64整数:tf.int8 tf.int16
- 你可以按照以下方法使用 ls 命令来查看你的系统中都有那些 Python 的二进制文件可供使用。$ ls /usr/bin/python*/
- 写在前面其实我之前写过一个简单的识别手写数字的程序,但是因为逻辑比较简单,而且要求比较严苛,是在50x50大小像素的白底图上手写黑色数字,并
- 遇到的问题:在做爬虫的时候,爬取的url链接内还有转义字符,反斜杠 \,打算用正则的re.sub()替换掉的时候遇到了问题,这是要做替换的字
- 本文利用 MySQL的扩展功能 REPLACE INTO 来生成全局id,REPLACE INTO和INSERT的功能一样,但是当使用REP
- 引言提到 numpy 的数组操作,我们就不得不说到 np.concatenate() 函数,concatenate 一词在英文中是级联的意思
- 一、先来看看效果接口请求返回的数据:二、官方登录流程图三、小程序登录流程梳理:1、小程序端调用wx.login2、判断用户是否授权3、小程序
- 一、绘制带趋势线的散点图实现功能:在散点图上添加趋势线(线性拟合线)反映两个变量是正相关、负相关或者无相关关系。实现代码:import pa
- 前言在使用数据库定时任务时,常常会出现定时任务不执行的问题,现对该问题出现的原因及解决方案做一些分析和整理。原因分析及解决方法当我们发现My