专栏首页从零开始学自动化测试pytest文档40-pytest.ini配置用例查找规则(面试题)

pytest文档40-pytest.ini配置用例查找规则(面试题)

前言

面试题:pytest如何执行不是test开头的用例?如执行 xxx_*.py这种文件的用例。 pytest.ini 配置文件可以修改用例的匹配规则。

pytest命令行参数

cmd打开输入pytest -h 查看命令行参数找到 [pytest] ini-options

  • pythonfiles (args) 匹配 python 用例文件, 如test.py、 _test.py
  • python_classes (args) 匹配 class 类名称 如Test*.py
  • pythonfunctions (args) 匹配函数和class里面方法 如test*
[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
  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
  console_output_style (string) console output: "classic", or with additional pr
  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
  rsyncdirs (pathlist)     list of (relative) paths to be rsynced for remote dis
  rsyncignore (pathlist)   list of (relative) glob-style paths to be ignored for
  looponfailroots (pathlist) directories to check for changes

修改匹配规则

pytest 默认查找用例匹配规则

  • 测试文件以test_开头(以_test结尾也可以)
  • 测试类以Test开头,并且不能带有 init 方法
  • 测试函数以test_开头

如果我们想匹配以 xxx_*.py的文件,pytest.ini 文件放到项目的根目录。 在 pytest.ini 文件添加一项 python_files 即可

[pytest]

python_files =  xxx_*.py

使用案例

写一个 xxx_yoyo.py 的文件用例

#  xxx_yoyo.py
# 作者:上海-悠悠 QQ交流群:779429633
def test_1():
    print("hello")

def test_2():
    print("world")

cmd 输入 pytest 执行,就可以匹配到了

D:\soft\demo>pytest
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-4.5.0, py-1.5.4, pluggy-0.13.1
rootdir: D:\soft\code\web_pytest_2020, inifile: pytest.ini
plugins: allure-pytest-2.8.6
collected 2 items

xxx_yoyo.py hello
.world
.

========================== 2 passed in 0.13 seconds ===========================

匹配测试用例类和方法相关配置参考如下

[pytest]

python_files =  xxx_*.py *_xxx.py
python_classes = Test*
python_functions = test_*

多个匹配规则中间用空格隔开,其它配置参考这篇https://www.cnblogs.com/yoyoketang/p/9550648.html

本文分享自微信公众号 - 从零开始学自动化测试(yoyoketang),作者:上海悠悠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • pytest文档18-配置文件pytest.ini

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

    上海-悠悠
  • pytest文档5-fixture之conftest.py

    前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景: 用例1需要先登录,用...

    上海-悠悠
  • pytest文档22-pytest分布式执行(pytest-xdist)

    平常我们手工测试用例非常多时,比如有1千条用例,假设每个用例执行需要1分钟。如果一个测试人员执行需要1000分钟才能执行完,当项目非常紧急的时候, 我们会用测试...

    上海-悠悠
  • Pytest系列(14)- 配置文件pytest.ini的详细使用

    https://www.cnblogs.com/poloyy/category/1690628.html

    小菠萝测试笔记
  • PHP开发规范之使用phpcbf脚本自动修正代码格式

    在前段时间的文章:在PhpStorm中安装使用PHP_CodeSniffer编码规范检查工具中提到过phpcbf脚本

    沈唁
  • Ian Goodfellow:生成对抗网络 GAN 就是强化学习(超全资料)

    【新智元导读】今天,Ian Goodfellow开展了一场有关生成对抗网络(GAN)的最新AMA问答,从他小时候如何学习编程,如何想出GAN这个idea,到具体...

    新智元
  • iOS XibKits-- Label内边距设置

    ZY_FlyWay
  • Android学习之菜单

    android中包含多种菜单,本例带来的是选项菜单和上下文菜单。 1.选项菜单 在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。...

    水击三千
  • Qt 2D数据可视化之QCharts

    Qt Charts 在Qt4时代就有了,不过一直以来是商业许可的。QCharts可以在社区版使用后,Qt画图再也不用需要配置第三方的qcustomplot和qw...

    用户5908113
  • JDBC批量提交SQL的几点问题解答

    1. 疑问 问题一:Statement的executeBatch方法是否会执行commit操作,是否还需要再执行一次commit()? 问题二:执行批量操作的过...

    囚兔

扫码关注云+社区

领取腾讯云代金券