pytest十三:配置文件 pytest.ini
pytest 配置文件可以改变 pytest 的运行方式,它是一个固定的文件 pytest.ini 文件,读取配置信息,按指定的方式去运行。
ini 配置文件
pytest 里面有些文件是非 test 文件
pytest.ini pytest 的主配置文件,可以改变 pytest 的默认行为
conftest.py 测试用例的一些 fixture 配置
__init__.py 识别该文件夹为 python 的 package 包
tox.ini 不 pytest.ini 类似,用 tox 工具时候才有用
setup.cfg 也是 ini 格式文件,影响 setup.py 的行为
ini 文件基本格式
[pytest]
addopts = -rsxX
xfail_strict = true
用 pytest —help 指令可以查看 pytest.ini 的设置选项

--rsxX 表示 pytest 报告所有测试用例被跳过、预计失败、预计失败但实际被通过的原因
mark 标记
如下案例,使用了 2 个标签:webtest 和 hello,使用 mark 标记功能对于以后分类测试非常有用处


import pytest @pytest.mark.webtest
def test_send_http():
print('mark web test') def test_something_quick():
pass def test_another():
pass @pytest.mark.hello
class TestClass:
def test_01(self):
print('hello :') def test_02(self):
print('hello world!') if __name__=='__main__':
pytest.main()
有时候标签多了,不容易记住,为了方便后续执行指令的时候能准确使用 mark 的标签,可以写入到 pytest.ini 文件

[pytest] markers =
webtest: Run the webtest case
hello: Run the hello case
标记好之后,可以使用 pytest —markers 查看到
> pytest --markers @pytest.mark.webtest: Run the webtest case
@pytest.mark.hello: Run the hello case
@pytest.mark.skip(reason=None): skip the given test function with an optional reason. Example: skip(reason="no way of currently testing this") skips the test.
@pytest.mark.skipif(condition): skip the given test function if eval(condition) results in a True value. Evaluation happens within the module global context. Example: skipif('sys.platform == "win32"') skips the test if we are on the win32 platform. see http://pytest.org/latest/skipping.html
@pytest.mark.xfail(condition, reason=None, run=True, raises=None, strict=False): mark the test function as an expected failure if eval(condition) has a True value. Optionally specify a reason for better reporting and run=False if you don't even want to execute the test function. If only specific exception(s) are expected, you can list them in raises, and if the test fails in other ways, it will be reported as a true failure. See http://pytest.org/latest/skipping.html
@pytest.mark.parametrize(argnames, argvalues): call a test function multiple times passing in different arguments in turn. argvalues generally needs to be a list of values if argnames specifies only one name or a list of tuples of values if argnames specifies multiple names. Example:
@parametrize('arg1', [1,2]) would lead to two calls of the decorated test function, one with arg1=1 and another with arg1=2.see http://pytest.org/latest/parametrize.html for more info and examples.
@pytest.mark.usefixtures(fixturename1, fixturename2, ...): mark tests as needing all of the specified fixtures. see http://pytest.org/latest/fixture.html#usefixtures
@pytest.mark.tryfirst: mark a hook implementation function such that the plugin machinery will try to call it first/as early as possible.
@pytest.mark.trylast: mark a hook implementation function such that the plugin machinery will try to call it last/as late as possible. 最上面两个就是刚才写入到 pytest.ini 的配置了
禁用 xpass
设置 xfail_strict = true 可以让那些标记为@pytest.mark.xfail 但实际通过的测试用例被报告为失败 什么叫标记为@pytest.mark.xfail 但实际通过,这个比较绕脑,看以下案例
测试结果


import pytest def test_hello():
print('hello world!')
assert 1 @pytest.mark.xfail()
def test_01():
a = 'hello'
b = 'hello world'
assert a==b @pytest.mark.xfail()
def test_02():
a = 'hello'
b = 'hello world'
assert a != b if __name__=='__main__':
pytest.main()
test_01 和 test_0 这 2 个用例一个是 a == b 一个是 a != b,两个都标记失败了,我们希望两个用例不用执行全部显示 xfail。实际上最后一个却显示 xpass.为了让两个都显示 xfail,那就加个配置xfail_strict = true
这样标记为 xpass 的就被强制性变成 failed 的结果


这样标记为 xpass 的就被强制性变成 failed 的结果
配置文件如何放
一般一个工程下方一个 pytest.ini 文件就可以了,放到顶层文件夹下

addopts
addopts 参数可以更改默认命令行选顷,这个当我们在 cmd 输入指令去执行用例的时候,会用到,比如我想测试完生成报告,指令比较长
> pytest -v --rerun 1 --html=report.html --self-contained-html
每次输入这么多,不太好记住,于是可以加到 pytest.ini 里

这样我下次打开 cmd,直接输入 pytest,它就能默认带上这些参数了(备注:--html=report.html 是生成 html 报告)
pytest十三:配置文件 pytest.ini的更多相关文章
- 配置文件pytest.ini
前言 pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行. ini配置文件 pytest里面有些文件是非test文件 py ...
- Pytest_配置文件-pytest.ini(4)
pytest配置文件可以改变pytest的默认运行方式,它是一个固定的文件名称pytest.ini. 存放路径为项目的根目录 解决中文报错 在讲解配置文件的可用参数前,我们先解决一个高概率会遇到的问题 ...
- MySQL Cluster 配置文件(config.ini)详解
MySQL Cluster 配置文件(config.ini)详解 ################################################################### ...
- MySQL Server 5.6 配置文件my.ini 以及windows上mysql表名区分大小写
MySQL Server 5.6的配置文件my.ini的位置跟以往有所不同: 我的是在:C:\ProgramData\MySQL\MySQL Server 5.6\my.ini 前两天导sql 导完之 ...
- 关于Windows下无法在MySQL安装目录找到配置文件my.ini
目前5.7版本的MySQL的配置文件my.ini位于: C:\ProgramData\MySQL\MySQL Server 5.7
- FastAdmin 插件配置文件 info.ini 中的 state 什么意思?
FastAdmin 插件配置文件 info.ini 中的 state 什么意思? 在插件配置中有一个 state ,这是配置插件开关的.
- Mysql配置文件my.ini详解
以下是Mysql数据库服务器配置文件my.ini的详细配置.应用场合是InnoDB引擎,2核CPU, 32位SUSE. [client] #password = your_password port ...
- pytest系列(四)- pytest+allure+jenkins - 持续集成平台生成allure报告
pytest是什么 pytest是python的一款测试框架,拥有unittest的功能并比它更丰富. allure是什么 有非常多的优秀的测试框架,但却是有非常少优秀的报告工具可以展示非常清楚的用例 ...
- MySql5.7配置文件my.ini 设置 my.ini文件路径
mysql配置文件my-default.ini my.ini修改后重启无效,原来是路径错了,记录一下: windows操作系统下: 1. 由于我们使用MySql 时,需要修改mysql 的 my.i ...
随机推荐
- Golang面向API编程-interface(接口)
Golang面向API编程-interface(接口) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Golang并不是一种典型的面向对象编程(Object Oriented Pr ...
- Hbase记录-HBase扫描/计数/权限
HBase扫描 scan 命令用于查看HTable数据.使用 scan 命令可以得到表中的数据.它的语法如下: scan ‘<table name>’ 下面的示例演示了如何使用scan ...
- POJ - 2031 Building a Space Station(计算几何+最小生成树)
http://poj.org/problem?id=2031 题意 给出三维坐标系下的n个球体,求把它们联通的最小代价. 分析 最小生成树加上一点计算几何.建图,若两球体原本有接触,则边权为0:否则边 ...
- Git与GitHub学习笔记(四)合并远程分支
在这里的前提: 1.你已经fork 源作者的项目到你自己的仓库了 2.git clone 自己仓库fork的项目,注意地址,这里是自己的账号下的地址,而不是源作者的项目地址哦 3.在本地修改代码,gi ...
- PageRank简单实现中的一个错误
在我的一篇博客PageRank中,在5.1 算法实现中简单实现部分原本是有一个错误的.这个错误也体现出我当时对PageRank算法有理解上的偏差. 这是个什么样的错误呢?是这样的: 简单实现中计算每个 ...
- jQuery-easyui和validate表单验证实例
jQuery EasyUI 表单 - 表单验证插件validatebox 使用时需要向页面引入两个css文件如下: <link rel="stylesheet" href=& ...
- asp.net mvc4 Json问题
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- Linux - DDOS检测
netstat netstat -na #显示所有连接到服务器的活跃的网络连接 netstat -an | grep : | sort # 只显示连接到80段口的活跃的网络连接,80是http端口, ...
- Flask最强攻略 - 跟DragonFire学Flask - 第十篇 before_request after_request
Flask我们已经学习很多基础知识了,现在有一个问题 我们现在有一个 Flask 程序其中有3个路由和视图函数,如下: from flask import Flask app = Flask(__na ...
- Git操作学习笔记
根据廖雪峰老师git教程学习整理 这里需要辨析一下概念.Github是代码托管平台,是协作的工具;而Git是版本控制工具.Git不需要联网,在本机就可以使用 集中式版本控制系统与分布式版本控制系统 S ...