pytest配置文件pytest.ini的详细使用


Posted in Python onApril 17, 2021

前言

pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行

非test文件

pytest里面有些文件是非test文件

  • pytest.ini:pytest的主配置文件,可以改变pytest的默认行为
  • conftest.py:测试用例的一些fixture配置
  • _init_.py:识别该文件夹为python的package包

查看pytest.ini的配置选项

cmd执行

pytest --help

找到这部分内容

[pytest] ini-options in the first pytest.ini|tox.ini|setup.cfg file found:

  markers (linelist):   markers for test functions
  empty_parameter_set_mark (string):
                        default marker for empty parametersets
  norecursedirs (args): directory patterns to avoid for recursion
  testpaths (args):     directories to search for tests when no files or directories are given in the command line.
  usefixtures (args):   list of default fixtures to be used with this project
  python_files (args):  glob-style file patterns for Python test module discovery
  python_classes (args):
                        prefixes or glob names for Python test class discovery
  python_functions (args):
                        prefixes or glob names for Python test function and method discovery
  disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool):
                        disable string escape non-ascii characters, might cause unwanted side effects(use at your own
                        risk)
  console_output_style (string):
                        console output: "classic", or with additional progress information ("progress" (percentage) |
                        "count").
  xfail_strict (bool):  default for the strict parameter of xfail markers when not given explicitly (default: False)
  enable_assertion_pass_hook (bool):
                        Enables the pytest_assertion_pass hook.Make sure to delete any previously generated pyc cache
                        files.
  junit_suite_name (string):
                        Test suite name for JUnit report
  junit_logging (string):
                        Write captured log messages to JUnit report: one of no|log|system-out|system-err|out-err|all
  junit_log_passing_tests (bool):
                        Capture log information for passing tests to JUnit report:
  junit_duration_report (string):
                        Duration time to report: one of total|call
  junit_family (string):
                        Emit XML for schema: one of legacy|xunit1|xunit2
  doctest_optionflags (args):
                        option flags for doctests
  doctest_encoding (string):
                        encoding used for doctest files
  cache_dir (string):   cache directory path.
  filterwarnings (linelist):
                        Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings.
  log_print (bool):     default value for --no-print-logs
  log_level (string):   default value for --log-level
  log_format (string):  default value for --log-format
  log_date_format (string):
                        default value for --log-date-format
  log_cli (bool):       enable log display during test run (also known as "live logging").
  log_cli_level (string):
                        default value for --log-cli-level
  log_cli_format (string):
                        default value for --log-cli-format
  log_cli_date_format (string):
                        default value for --log-cli-date-format
  log_file (string):    default value for --log-file
  log_file_level (string):
                        default value for --log-file-level
  log_file_format (string):
                        default value for --log-file-format
  log_file_date_format (string):
                        default value for --log-file-date-format
  log_auto_indent (string):
                        default value for --log-auto-indent
  faulthandler_timeout (string):
                        Dump the traceback of all threads if a test takes more than TIMEOUT seconds to finish. Not
                        available on Windows.
  addopts (args):       extra command line options
  minversion (string):  minimally required pytest version
  rsyncdirs (pathlist): list of (relative) paths to be rsynced for remote distributed testing.
  rsyncignore (pathlist):
                        list of (relative) glob-style paths to be ignored for rsyncing.
  looponfailroots (pathlist):
                        directories to check for changes

pytest.ini应该放哪里?

就放在项目根目录下 ,不要乱放,不要乱起其他名字

接下来讲下常用的配置项

marks

作用:测试用例中添加了 @pytest.mark.webtest 装饰器,如果不添加marks选项的话,就会报warnings

格式:list列表类型

写法:

[pytest]
markers =
    weibo: this is weibo page
    toutiao: toutiao
    xinlang: xinlang

xfail_strict

作用:设置xfail_strict = True可以让那些标记为@pytest.mark.xfail但实际通过显示XPASS的测试用例被报告为失败

格式:True 、False(默认),1、0

写法:

[pytest]

# mark标记说明
markers =
    weibo: this is weibo page
    toutiao: toutiao
    xinlang: xinlang

xfail_strict = True

具体代码栗子

未设置 xfail_strict = True 时,测试结果显示XPASS

@pytest.mark.xfail()
def test_case1():
    a = "a"
    b = "b"
    assert a != b

collecting ... collected 1 item

02断言异常.py::test_case1 XPASS [100%]

============================= 1 xpassed in 0.02s ==============================

已设置 xfail_strict = True 时,测试结果显示failed

collecting ... collected 1 item

02断言异常.py::test_case1 FAILED                                         [100%]
02断言异常.py:54 (test_case1)
[XPASS(strict)] 

================================== FAILURES ===================================
_________________________________ test_case1 __________________________________
[XPASS(strict)] 
=========================== short test summary info ===========================
FAILED 02断言异常.py::test_case1
============================== 1 failed in 0.02s ==============================

addopts

作用:addopts参数可以更改默认命令行选项,这个当我们在cmd输入一堆指令去执行用例的时候,就可以用该参数代替了,省去重复性的敲命令工作

比如:想测试完生成报告,失败重跑两次,一共运行两次,通过分布式去测试,如果在cmd中写的话,命令会很长

pytest -v --rerun=2 --count=2 --html=report.html --self-contained-html -n=auto

每次都这样敲不太现实,addopts就可以完美解决这个问题

[pytest]

# mark
markers =
    weibo: this is weibo page
    toutiao: toutiao
    xinlang: xinlang

xfail_strict = True

# 命令行参数
addopts = -v --reruns=1 --count=2 --html=reports.html --self-contained-html -n=auto

加了addopts之后,我们在cmd中只需要敲pytest就可以生效了!!

log_cli

作用:控制台实时输出日志

格式:log_cli=True 或False(默认),或者log_cli=1 或 0

log_cli=0的运行结果

pytest配置文件pytest.ini的详细使用

log_cli=1的运行结果

pytest配置文件pytest.ini的详细使用

结论

很明显,加了log_cli=1之后,可以清晰看到哪个package下的哪个module下的哪个测试用例是否passed还是failed;

所以平时测试代码是否有问题的情况下推荐加!!!但如果拿去批量跑测试用例的话不建议加,谁知道会不会影响运行性能呢?

norecursedirs

作用:pytest 收集测试用例时,会递归遍历所有子目录,包括某些你明知道没必要遍历的目录,遇到这种情况,可以使用 norecursedirs 参数简化 pytest 的搜索工作【还是挺有用的!!!】

默认设置: norecursedirs = .* build dist CVS _darcs {arch} *.egg

正确写法:多个路径用空格隔开

[pytest]

norecursedirs = .* build dist CVS _darcs {arch} *.egg venv src resources log report util

更改测试用例收集规则

pytest默认的测试用例收集规则

  • 文件名以 test_*.py 文件和 *_test.py
  • 以  test_ 开头的函数
  • 以  Test 开头的类,不能包含 __init__ 方法
  • 以  test_ 开头的类里面的方法

我们是可以修改或者添加这个用例收集规则的;当然啦,是建议在原有的规则上添加的,如下配置

[pytest]

python_files =     test_*  *_test  test*
python_classes =   Test*   test*
python_functions = test_*  test*

到此这篇关于pytest配置文件pytest.ini的详细使用的文章就介绍到这了,更多相关pytest.ini配置内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python3.3教程之模拟百度登陆代码分享
Jan 16 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
Python脚本获取操作系统版本信息
Dec 17 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
python 2.7 检测一个网页是否能正常访问的方法
Dec 26 Python
python实现公司年会抽奖程序
Jan 22 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
Django实现简单网页弹出警告代码
Nov 15 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
解决python cv2.imread 读取中文路径的图片返回为None的问题
Jun 02 Python
python3 中使用urllib问题以及urllib详解
Aug 03 Python
Python selenium模拟网页点击爬虫交管12123违章数据
May 26 Python
用Python简陋模拟n阶魔方
Python OpenCV快速入门教程
python小程序之飘落的银杏
Python Numpy之linspace用法说明
Apr 17 #Python
用Python的绘图库(matplotlib)绘制小波能量谱
用基于python的appium爬取b站直播消费记录
解决numpy数组互换两行及赋值的问题
Apr 17 #Python
You might like
PHP循环输出指定目录下的所有文件和文件夹路径例子(简单实用)
2014/05/10 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP生成图片缩略图类示例
2017/01/12 PHP
php文件上传原理与实现方法详解
2019/12/20 PHP
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
js事件监听机制(事件捕获)总结
2014/08/08 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
p5.js入门教程之鼠标交互的示例
2018/03/16 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
利用js实现简易红绿灯
2020/10/15 Javascript
Python中使用PIPE操作Linux管道
2015/02/04 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
2018/01/08 Python
python解析含有重复key的json方法
2019/01/22 Python
python 求一个列表中所有元素的乘积实例
2019/06/11 Python
Django中create和save方法的不同
2019/08/13 Python
Python3使用PySynth制作音乐的方法
2019/09/09 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
python工具——Mimesis的简单使用教程
2021/01/16 Python
AmazeUI的下载配置与Helloworld的实现
2020/08/19 HTML / CSS
房地产销售计划书
2014/01/10 职场文书
安全生产大检查方案
2014/05/07 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
英语邀请函范文
2015/02/02 职场文书
手机销售员岗位职责
2015/04/11 职场文书
2016年教师节慰问信
2015/12/01 职场文书
Windows下用Nginx配置https服务器及反向代理的问题
2021/09/25 Servers
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js