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

本文详细介绍了pytest.ini文件的作用和使用方法,它是pytest测试框架中用于定制化配置的重要工具,可以定义测试运行环境、插件设置、标记规则和报告输出等。通过创建和配置pytest.ini,可以针对项目需求调整pytest的行为,提高测试效率和质量。
部署运行你感兴趣的模型镜像

使用 pytest.ini 定制化和管理 pytest 测试框架的配置

在这里插入图片描述

前言

在使用 pytest 进行测试时,我们经常需要根据项目的需求进行定制化配置。pytest 提供了丰富的配置选项,使我们可以灵活地调整测试框架的行为。其中,pytest.ini 文件是一种方便的方式来定义和管理 pytest 的配置。本文将详细介绍 pytest.ini 的作用和使用方法,帮助您定制化和管理 pytest 测试框架的配置。

获取更多技术资料,请点击!

pytest.ini配置文件

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

  • 定制化配置:通过 pytest.ini 文件,可以定义和修改 pytest 的各种配置选项,包括测试运行环境、插件设置、标记规则、报告输出等。
  • 项目级配置:pytest.ini 文件位于项目的根目录下,它的配置会被应用于整个项目中的测试。这样可以保持一致的配置,方便多个测试模块的管理和维护。
  • 覆盖默认配置:pytest.ini 文件允许覆盖 pytest 默认的配置选项。通过在 pytest.ini 中定义相同的配置项,可以修改默认行为,以满足项目的需求。

pytest.ini文件的创建和配置

  1. 创建 pytest.ini 文件:在项目的根目录下创建一个名为 pytest.ini 的文件。
  2. 定义配置选项:在 pytest.ini 中,使用标准的 INI 格式,定义需要修改或添加的配置选项。例如:
[pytest]
addopts = -s -v
markers =
    slow: marks tests as slow

在上面的示例中,我们修改了 addopts 选项,指定了 pytest 的运行参数;并定义了一个名为 “slow” 的标记,用于标记耗时较长的测试。

  1. 配置插件:如果项目使用了第三方插件,可以在 pytest.ini 中配置插件的选项。例如:
[pytest]
plugins =
    pytest-ordering

在上面的示例中,我们配置了 pytest-ordering 插件,可以控制用例的执行顺序。

全部配置项如下:

[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
  pythonpath (paths):   Add paths to sys.path
  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

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

使用示例

pytest.ini文件如下:

[pytest]
addopts = -vs

被测程序如下:

class Calculator: 
    def add(self, a, b):

        if a > 99 or a < -99 or b > 99 or b < -99:
            print("请输入范围为【-99, 99】的整数或浮点数")
            return "参数大小超出范围"

        return a + b

    def div(self, a, b):
        if a > 99 or a < -99 or b > 99 or b < -99:
            print("请输入范围为【-99, 99】的整数或浮点数")
            return "参数大小超出范围"

        return a / b

测试脚本如下:

class TestCalc:

    def setup(self):
        self.calc=Calculator()

    def test_add1(self):
        result = self.calc.add(1, 1)
        print(f"实际结果为:{result}")
        expect = 2
        assert result == expect

    def test_add2(self):
        result = self.calc.add(-0.01, 0.02)
        print(f"实际结果为:{result}")
        # 期望结果
        expect = 0.01
        # 断言
        assert result == expect

    def test_div1(self):
        result = self.calc.div(1,1)
        assert result == 1

    def test_div2(self):
        try:
            result = self.calc.div(1,0)
        except ZeroDivisionError as e:
            print(f'除数为0{e}')
        assert False

输出结果如下图:

在这里插入图片描述

总结

pytest.ini 文件是 pytest 的一个强大特性,可以帮助我们定制化和管理 pytest 测试框架的配置。通过定义和修改 pytest 的配置选项,我们可以灵活调整测试运行环境、插件设置、标记规则和报告输出等,以满足项目的需求。

在本文中,我们介绍了 pytest.ini 文件的作用和使用方法。现在您可以创建自己的 pytest.ini 文件,并根据项目的需求进行定制化配置了。享受 pytest 提供的灵活性和便利性,提高测试的效率和质量吧!

获取更多技术资料,请点击!

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值