pytest进阶之配置文件

前言

  pytest配置文件能够改变pytest框架代码的运行规则。比如修改pytest收集用例的规则,添加命令行参数等等!下面我们来一一讲解常用的一些配置项

Help

通过命令pytest --help查看配置文件中可以添加的一些参数及选项,这些选项都是可以添加到pytest的配置文件的

[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 dire
  console_output_style (string) console output: classic or with additional progr
  usefixtures (args)       list of default fixtures to be used with this project
  python_files (args)      glob-style file patterns for Python test module disco
  python_classes (args)    prefixes or glob names for Python test class discover
  python_functions (args)  prefixes or glob names for Python test function and m
  disable_test_id_escaping_and_forfeit_all_rights_to_community_support (bool) di
  xfail_strict (bool)      default for the strict parameter of xfail markers whe
  junit_suite_name (string) Test suite name for JUnit report
  junit_logging (string)   Write captured log messages to JUnit report: one of n
  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.filterwar
  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 "li
  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
  addopts (args)           extra command line options
  minversion (string)      minimally required pytest version

environment variables:
  PYTEST_ADDOPTS           extra command line options
  PYTEST_PLUGINS           comma-separated plugins to load during startup
  PYTEST_DISABLE_PLUGIN_AUTOLOAD set to disable plugin auto-loading
  PYTEST_DEBUG             set to enable debug tracing of pytest‘s internals

to see available markers type: pytest --markers
to see available fixtures type: pytest --fixtures
(shown according to specified file_or_dir or current dir if not specified; fixtures with leading ‘_‘ are only shown with the ‘-v‘ option

File

通常情况下我们会把配置文件放到我们的项目根目录下 命名为 pytest.ini, 项目在运行时会首先按照配置文件中设置的参数选项来运行,其次再遵守pytest的默认规则

使用

1.添加默认参数选项

我们都知道pytest可以在cmd中使用命令行运行脚本,通常是这样的 pytest -vqs 脚本, 我们通过这个命令来运行一下脚本,大概输出运行信息就是下面这种形式

D:\PytestAutoTestFrameWork\TestCases>pytest -vqs test_loginCase.py
============================= test session starts =============================
platform win32 -- Python 3.6.4, pytest-4.4.1, py-1.6.0, pluggy-0.9.0
rootdir: D:\PytestAutoTestFrameWork, inifile: pytest.ini
plugins: rerunfailures-7.0, metadata-1.8.0, html-1.20.0, allure-pytest-2.6.2
collected 4 items

test_loginCase.py ------------open browser------------
-------staring login-------
info: string upload url "https://mail.126.com"
info:switching to iframe "//div[@id="loginDiv"]/iframe"
info:clearing value
[Info:Starting find the element "//input[@name="email"]" by "xpath"!]
info:input "linuxxiaochao"
[Info:Starting find the element "//input[@name="email"]" by "xpath"!]
info:clearing value
[Info:Starting find the element "//input[@name="password"]" by "xpath"!]
info:input "xiaochao11520"
[Info:Starting find the element "//input[@name="password"]" by "xpath"!]
info:click "//a[@id="dologin"]"
info:switch back to default iframe
---------end login---------

现在们在我们的项目根目录下新建pytest.ini文件并输入下面的选项

[pytest]
addopts=-vqs

我们再次运行脚本仅通过命令pytest即可,这时候一会发现输出信息和上面一摸一样,这就是配置文件的作用

2.添加用例路径

[pytest]
testpaths=./TestCases

通过这样一项设置,我们可以把我们用例所在的目录添加到配置文件,这样我们在运行用例的时候,pytest会直接在配置文件所在的目录搜索用例

3.指定pytest的版本

[pytest]
minversion = 3.0

4.指定pytest忽略哪些搜索目录

[pytest]
norecursedirs = .* venv src *.egg dist build

标红部分为系统默认不会搜索的路径,前面是用户自定义的路径,注:当自定义时最好把系统默认的添加到后面

5.修改pytest收集用例的规则-测试类

pytest默认会搜索以test_开头/以_test结尾的文件,以Test开头的类,且以test_开头的测试函数为测试用例

我们希望pytest能够搜索以Test*开头,*Test结尾或者*Suite开头或结尾的类名字,我们需要添加这样的选项

[pytest]
python_classes = *Test Test* *Suite

5.修改pytest收集用例规则-修改测试模块

我们希望pytest可以搜索以check_*开头的文件

[pytest]
python_files=test_* *_test check_*

6.修改pytest收集用例规则-修改测试方法

我们希望可以搜索以check_* 开头的测试函数为测试用例

[pytest]
python_functions = test_* *_test check_*

7.添加生成报告选项

[pytest]
addopts = -v --rerun 1 --html=report.html --self-contained-html

8.添加mark标记

通常我们在编写测试用例的时候,会在用例上回添加一些标记来记录哪些用例需要运行,哪些需要跳过,哪些需要标记为failed等等,那么难免我们记不住这些标记,我们可以通过配置文件记录这些标记

[pytest]
markers=
    loginTest: Run login test cases
    contactTest: Run add contact test cases
    sendMailTest: Run send mail test cases

我们添加完这些标记之后,可以通过 pytest --markers 查看我们自定义的mark

D:\PytestAutoTestFrameWork\TestCases>pytest --markers
@pytest.mark.loginTest: Run login test cases

@pytest.mark.contactTest: Run add contact test cases

@pytest.mark.sendMailTest: Run send mail test cases

@pytest.mark.flaky(reruns=1, reruns_delay=0): mark test to re-run up to ‘reruns‘ times. Add a delay of ‘reruns_delay‘ seconds between re-runs.

@pytest.mark.filterwarnings(warning): add a warning filter to the given test. see https://docs.pytest.org/en/latest/warnings.html#pytest-mark-filterwarnings

@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看的差不多了,其实小项目也写完了,一直没时间整理,也没时间写到博客上来,快51了,争取这几天发出来!

原文地址:https://www.cnblogs.com/linuxchao/p/linuxchao-pytest-configfile.html

时间: 2024-11-09 00:05:35

pytest进阶之配置文件的相关文章

pytest进阶之html测试报告

前言 Pytest系列已经写了几篇文章了,也不知道对多少人有帮助,总之对于我自己来说该掌握的都已经掌握了,那么今天我们再来说说pytest如何生成一个完整的html测试报告,让你在吹牛逼的路上再多一份资本!废话不多说,进入正题!(咋就莫名其妙想起这句话了呢, 估计看文章看多了,貌似挺多人用这句话过度……) 使用pytest-html插件生成测试报告 pytest-html生成报告 pytest是借助pytest-html插件生成测试测试报告, 不用自己编写生成报告代码.github源码地址 ht

Pytest进阶之参数化

前言 unittest单元测试框架使用DDT进行数据驱动测试,那么身为功能更加强大且更加灵活的Pytest框架怎么可能没有数据驱动的概念呢?其实Pytest是使用@pytest.mark.parametrize装饰器来实现数据驱动测试的,那么今天我们就简单来说说在它是如何进行数据驱动测试的 单个参数 """ ------------------------------------ @Time : 2019/7/25 19:18 @Auth : linux超 @File : t

pytest-18-配置文件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格式

pytest的使用

一.python安装 1.windows(server): 双击python-3.6.7-amd64.exe执行安装流程,使用默认安装方式即可. 安装完成后查看是否安装成功: C:\Users\Administrator>python --version 'python' is not recognized as an internal or external command, operable program or batch file. 如果出现不识别python的情况,需要将python的

python学习-pytest(五)-pytest常用方法

最近工作中用到了pytest,总结一些用法: 1. 安装: pip install pytest 2. 运行: pytest 默认只能识别以test_ 开头的文件和测试用例,如果pytest后面不带文件名,则默认执行当前目录下所有以test_ 开头的文件. 执行某个文件里所有以 test 开头的用例:pytest test_demo.py # test_demo.py def test_01(): assert 1+1 == 2 def test_02(): assert 1+3 == 4 执行

解决PytestUnknownMarkWarning: Unknown pytest.mark.welcome - is this a typo? You can register custom marks to avoid this warning

在项目下新建一个pytest.ini的配置文件,里面如下配置即可.markers=后面是标签名,如有多个,第二个开始要换行,且要缩进,不然会报错 [pytest] markers=welcome login 原文地址:https://www.cnblogs.com/my_captain/p/12704370.html

Allure-pytest功能特性介绍

前言 Allure框架是一个灵活的轻量级多语言测试报告工具,它不仅以web的方式展示了简介的测试结果,而且允许参与开发过程的每个人从日常执行的测试中最大限度的提取有用信息从dev/qa的角度来看,Allure报告简化了常见缺陷的统计:失败的测试可以分为bug和被中断的测试,还可以配置日志.步骤.fixture.附件.计时.执行历史以及与TMS和BUG管理系统集成,所以,通过以上配置,所有负责的开发人员和测试人员可以尽可能的掌握测试信息.从管理者的角度来看,Allure提供了一个清晰的“大图”,其

J2EE进阶(四)Spring配置文件详解

J2EE进阶(四)Spring配置文件详解 前言 Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸".Java EE程序员必须学会并灵活应用这份"图纸"准确地表达自己的"生产意图".Spring配置文件是一个或多个标准的XML文档,applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件. 下面列举的是

【SSH进阶之路】一步步重构容器实现Spring框架——配置文件+反射实现IoC容器(十)

目录 [SSH进阶之路]一步步重构容器实现Spring框架--从一个简单的容器开始(八) [SSH进阶之路]一步步重构容器实现Spring框架--解决容器对组件的"侵入式"管理的两种方案--主动查找和控制反转(九) [SSH进阶之路]一步步重构容器实现Spring框架--配置文件+反射实现IoC容器(十) [SSH进阶之路]一步步重构容器实现Spring框架--彻底封装,实现简单灵活的Spring框架(十一)(未更新) 上上篇博文[SSH进阶之路]一步步重构容器实现Spring框架--