pytest之配置文件pytest.ini

news2024/11/25 15:43:35

前言:

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

pytest.ini文件的位置一般放在项目的根目录下,不能随便放,也不能更改名字。

查看pytest.ini文件的配置选项

  cmd下执行pytest -h 或者 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.
  filterwarnings (linelist):
                        Each line specifies a pattern for warnings.filterwarnings. Processed after -W/--pythonwarnings.
  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.
  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.
  addopts (args):       extra command line options
  minversion (string):  minimally required pytest version
  required_plugins (args):
                        plugins that must be present for pytest to run
  render_collapsed (bool):
                        Open the report with all rows collapsed. Useful for very large reports
  max_asset_filename_length (string):
                        set the maximum filename length for assets attached to the html report.
  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

常用的配置选项

markers

作用:测试用例中使用@pytest.mark.slow装饰器,如果不添加markers选项就会报warning

格式:list列表类型

写法:

# file_name: pytest.ini

[pytest]
markers =
    slow: run slow mark case
    fast: run fast mark case

xfail_strict

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

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

写法:

# file_name: pytest.ini

[pytest]
markers =
    slow: run slow mark case
    fast: run fast mark case

xfail_strict = true

举例说明:

# file_name: test_xfail.py

import pytest


class Test_C:

    @pytest.mark.xfail
    def test_c(self):
        print('\n------------------> test_c has ran')
        a = 'hello'
        b = 'hello world'
        assert a != b


if __name__ == '__main__':
    pytest.main(['-s', 'test_xfail.py'])

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

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

addopts

作用:addopts参数可以更改默认的命令行选项,这个参数在我们需要在命令行中输入大一堆指令来执行测试用例时会用到,这个时候就可以在配置文件中配置这个参数来代替,省掉很多重复的工作

例如:我想在测试结束之后,生成测试报告,失败的测试用例重跑两次,如果通过命令行输入指令来执行的话,指令会很长:

pytest -v --reruns=2 --html=report.html --self-contained-html

如果每次执行都要输入上面的指令会很繁琐,这个时候我们通过配置addopts参数来解决这个问题:

# file_name: pytest.ini

[pytest]
markers =
    slow: run slow mark case
    fast: run fast mark case

xfail_strict = True

addopts = -v --reruns=2 --html=report.html --self-contained-html  # 多个命令行参数用空格分隔开,可以添加多个命令行参数

这样加上addopts后,我们再次进入cmd命令行执行时,只要输入pytest就可以默认带上这些参数了。

log_cli

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

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

设置log_cli=True时,运行结果为:

设置log_cli=False时,运行结果为:

结论:当我们设置log_cli=True时,可以非常清晰的看出具体的是哪个package下的哪个module下的哪个测试用例是passed还是failed;

所以我们平时在调试代码是否有问题时推荐加上log_cli=True,当测试用例调试通过之后批量执行时就可以去掉了。

norecursedirs

作用:pytest在收集测试用例的时候,会递归遍历当前目录下的所有子目录,当我们需要某些目录下的用例不要执行时,就可以通过设置norecursedirs参数来实现这个功能。

# file_name: pytest.ini

[pytest]
markers =
    slow: run slow mark case
    fast: run fast mark case

xfail_strict = True

addopts = -v --reruns=2 --html=report.html --self-contained-html

log_cli = False

norecursedirs = venv report util log  # 多个目录需要空格分开,可以配置多个

上面的配置表示venv report util log这4个目录下的用例需要过滤掉不执行。

更改测试用例的收集规则

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

  • 文件名匹配test_*.py或*_test.py
  • 以test_开头的函数
  • 以Test_开头的类,不能包含_init_方法
  • 类中以test_开头的方法

上面的默认规则我们是可以通过配置文件的设置来修改的

# file_name: pytest.ini

[pytest]
testpaths = xdist_study

python_files = test*.py

python_classes = Test*

python_functions = test_*

testpaths:配置在哪个目录下搜索测试用例,可自定义,可以配置多个,多个用空格隔开

python_files:用来配置搜索的测试用例的文件名称,可自定义,可以配置多个,多个用空格隔开

python_classes:配置搜索的测试用例的类名,可自定义,可以配置多个,多个用空格隔开

python_functions:配置搜索的测试用例的方法名,可自定义,可以配置多个,多个用空格隔开

上面的配置表示:在xdist_study目录下,搜索以test开头,以.py结尾的文件,以Test开头的类,以test_开头的方法。

总结:

感谢每一个认真阅读我文章的人!!!

 我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家评论区留言333免费领取,千万不要错过哦。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/724894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vant入门介绍

Vant 介绍 Vant是有赞开源的一套基于Vue2.0的Mobile组件库。Vant 是一套轻量、可靠的移动端组件库。通过 Vant,可以搭建出风格统一的,提升开发效率。通过Vant,可以搭建出风格统一的,提升开发效率。目前已有近50个组件,这些组件被广泛使用于有赞的各个移…

LVS-DR排错思路

一.LVS-DR实验排错思路 1.案例架构图 DR服务器:192.168.27.11 web服务器1:192.168.27.12 web服务器2:192.168.27.13 vip:192.168.27.180 客户端:192.168.27.2 1:配置负载调度器:&#xff…

【集群】脑裂是什么?Zookeeper是如何解决的?

文章目录 什么是脑裂Zookeeper集群中的脑裂场景过半机制 什么是脑裂 脑裂(split-brain)就是“大脑分裂”,也就是本来一个“大脑”被拆分了两个或多个“大脑”,我们都知道,如果一个人有多个大脑,并且相互独立的话,那么…

[HDCTF2019]MFC

前言 mfc逆向,有一个VM壳一看到它就头疼,好在这道题用不到,可以直接通过xspy获取mfc自定义消息 分析 工具下载: https://bbs.kanxue.com/thread-170033.htm 开始时完全没有头绪,有虚拟壳,用ida打开也看…

AMEYA360:Panasonic松下HF系列压敏电阻器

Panasonic HF系列压敏电阻器符合AEC-Q200标准,最大允许额定电压为16VDC,钳位电压高达43A。这些紧凑型SMD压敏电阻器适合用于汽车应用,采用模制结构,因此能够耐受很强的“焊接热冲击”。这些压敏电阻器符合ISO7637-2和ISO16750-2负…

迪赛智慧数——饼图(玫瑰饼图):抑郁症发病群体年龄

效果图 痛心,震惊了全网,著名歌手李玟,抑郁症自杀离世! 为什么看起来阳光开朗的人,也会得抑郁症?据数据调查显示,15-30岁为抑郁症的高发年纪,由于思想不够成熟,经验少&a…

QT开发技巧之QComboBox通过qss设置item高度,增加间隔

1.问题描述 QComboBox默认的下拉item间距太小,字挤在一起不好看,直接qss设置item高度但是没效果 2.解决后效果 可通过qss设置item的最小高度,增加间距,不同字体大小的combobox都能使用,简单方便 3.代码实现 &#xf…

葡萄牙语翻译,北京哪个公司比较好?

近年来,随着中国与各葡语系国家,特别是与巴西经贸、科技、文化交流的不断扩大,葡萄牙语翻译的需求也越来越大,但是专业葡语翻译人才紧缺。那么,如何做好葡萄牙语翻译,北京葡语翻译公司哪家好? 我…

分布式消息服务设计

分布式消息服务设计 背景 为了解决当A系统的一个“操作”需要发送一个通知(生产者),由关心这个操作的业务(消费者)订阅消息并处理时,实现业务解耦,并适合分布式。本文主要讲解以消息中间件Rab…

Debug_性能分析工具_Perf +

目录 1. perf 作用 2. perf 安装 3. perf 使用示例 3.1 耗时统计,画出火焰图 1. 下载绘制火焰图的开源pl代码 2. 执行以下命令 3. 用浏览器打开svg文件,看当前进程各子模块耗时占比 1. perf 作用 Perf 是Linux kernel自带的系统性能优化工具。 P…

HCIA-HarmonyOS Application Developer学习笔记

目录 一、HarmonyOS 介绍二、HarmonyOS 应用开发流程HarmonyOS 系统架构HarmonyOS 子系统集DevEco StudioHarmonyOS 应用包结构使用资源文件的方法权限管理分布式能力 三、Ability 设计与开发Ability 的概念和分类页面生命周期Intent载体页面间导航Particle Ability 开发 四、U…

使用Vue脚手架2

ref属性 src/components/SchoolName.vue <template><div class"school"><h2>学校名称&#xff1a;{{name}}</h2><h2>学校地址&#xff1a;{{address}}</h2></div> </template><script>export default {name:…

【C++修炼之路】31.异常

每一个不曾起舞的日子都是对生命的辜负 异常 一.C语言传统的处理错误的方式二.C异常概念三.异常的使用3.1 异常的抛出和捕获3.2 异常的重新抛出3.3 异常安全3.4 异常规范 四.自定义异常体系五.C标准库的异常体系六.异常的优缺点 一.C语言传统的处理错误的方式 传统的错误处理机…

Idea运行springboot项目(保姆级教学)

**大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯…

PHP:对比数据库,隐藏不满足条件的标签;对比数据库,将标签中的内容更改为数据库中的对应项

一、查询数据库数据&#xff0c;A列数据如果等于前端div中的值&#xff0c;那么将div中的值给其赋值为对应数据库中B列的值 如下案例&#xff1a;以第一个为例&#xff0c;如果id为append1&#xff0c;并且此id等于满足条件的数据库中colum_name列中的append1&#xff0c;就将…

Windows安装 PostgreSQL数据库并进行简单数据操作

介绍&#xff1a; 在开发和管理数据库应用程序时&#xff0c;选择合适的数据库管理系统是至关重要的。PostgreSQL 是一个强大且广受欢迎的开源关系型数据库管理系统&#xff0c;它具有稳定性、可靠性和丰富的功能。本文将介绍如何在 Windows 操作系统上下载、安装 PostgreSQL&a…

6. QT环境下使用OPenCV(利用鼠标实现图像的ROI区域选择)

1. 说明 一张图像显示的内容可能并非所有的都是有用信息,有时需要选定某些区域做出特殊的处理。在OPenCV当中可以在图像上响应鼠标的操作,选取出图像上的特殊区域 — ROI区域。 效果展示: 2. 实现步骤 首先在QtCreator中创建一个新的widget项目,并配置好OPenCV的开发环…

【GIS】Python多线程转换NC格式文件为TIFF

汇总 【GIS】使用cdsapi下载ERA5和ERA5_land逐小时数据 NC格式介绍 说明 NC文件读取使用netCDF4,NC文件转换为TIF使用rasterio或者GDAL。 一些细节: 格点数据转换为TIFF文件时候,计算六参数时候,应该要考虑,格点数据存储的坐标属于栅格中心点的位置,转换为TIFF时候,…

Vue3中使用async-validator进行表单校验

官方文档&#xff1a;mirrors / yiminghe / async-validator GitCodevalidate form asynchronous &#x1f680; Github 镜像仓库 &#x1f680; 源项目地址 ⬇https://gitcode.net/mirrors/yiminghe/async-validator?utm_sourcecsdn_github_accelerator 注意&#xff1a;当…

19 | 为什么我只查一行的语句,也执行这么慢?

以下内容出自 《MySQL 实战 45 讲》 19 | 为什么我只查一行的语句&#xff0c;也执行这么慢&#xff1f; 第一类&#xff1a;查询长时间不返回 mysql> select * from t where id1;一般碰到这种情况。大概率是表 t 被锁住了。 分析&#xff1a; 首先执行 show processlis…