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


    前言

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

    pytest命令行参数

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

    • python_files (args) 匹配 python 用例文件, 如test_*.py、 *_test.py
    • python_classes (args) 匹配 class 类名称 如Test*.py
    • python_functions (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:softdemo>pytest
    ============================= test session starts =============================
    platform win32 -- Python 3.6.0, pytest-4.5.0, py-1.5.4, pluggy-0.13.1
    rootdir: D:softcodeweb_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

  • 相关阅读:
    AVR汇编初探之二《AVR的指令与汇编系统》
    Fedora 18 装完后干的事
    重建tempdb
    sqlserver 2008 r2 SqlClrProvider报错解析
    Analysis Memory In Sqlserver
    《设计模式之禅》学习笔记(七)
    容易弄错的繁体字
    《C Primer Plus》学习笔记
    什么是 Windows 能干而 Linux 干不了的事情
    MySQL中BLOB字段类型介绍
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/13071288.html
Copyright © 2020-2023  润新知