自动化测试框架Pytest的使用规则解析

前言

在测试领域,Pytest是一个强大而灵活的工具,提供了许多方便的技巧来提高测试的效率和可维护性。本文将深入研究Pytest的技巧使用,主要包括Pytest的ini文件和conftest文件的使用。

pytest.ini文件的使用

1. 配置文件的创建:

Pytest通过ini文件进行全局配置,可以通过创建pytest.ini文件来进行配置。

2. 常用配置项:

配置文件可以包含许多配置项,其中一些常用的配置项包括:

[pytest]
addopts = -rxXs
markers =
    smoke: mark a test as a smoke test
    regression: mark a test as a regression test
    slow: mark a test as a slow test

注:pytest.ini文件中如果有中文,可能会出编码问题,需要把文件设置为gbk

在上述例子中:

  • addopts: 可以添加命令行选项,例如-rxXs,用于在测试运行中展示详细的失败信息,显示简洁的进度条,并停止在首次失败后的测试运行。

  • markers: 可以定义测试标记,以便于在测试运行时使用。这可以帮助对测试进行更细致的分类和过滤。

3. 运行配置:

通过在配置文件中设置addopts项,可以指定Pytest的运行参数。例如:

[pytest]
addopts = --verbose

此设置会在每次运行Pytest时自动添加--verbose参数,显示更详细的信息。

conftest.py文件的使用

定义:conftest.py是pytest特有的本地测试配置文件,既可以用来设置项目级的Fixture,也可以用来导入外部插件,还可以用来指定Hook函数(钩子函数)

conftest.py文件名称是固定,pytest会自动识别该文件,只作用于它所在的目录及子目录

1. 共享Fixture:

conftest.py文件可以用于定义在多个测试模块中共享的Fixture。Fixture是一种前置和后置条件的设置。

# conftest.py
​
import pytest
​
@pytest.fixture
def common_setup():
    print("建立公共资源...")
    yield
    print("破坏公共资源...")

2. Fixture的参数化:

conftest.py文件中,可以定义参数化的Fixture,以便在多个测试模块中使用不同的Fixture设置。

# conftest.py
​
import pytest
​
@pytest.fixture(params=["chrome", "firefox", "safari"])
def browser(request):
    print(f"\nSetting up {request.param} browser...")
    yield request.param
    print(f"\nTearing down {request.param} browser...")

3. 添加自定义命令行选项:

conftest.py还可以用于添加自定义的命令行选项,以扩展Pytest的功能。

# conftest.py
​
def pytest_addoption(parser):
    parser.addoption("--env", action="store", default="dev", help="Specify the environment: dev, test, prod.")

上述代码通过--env参数指定测试运行的环境。

4. 钩子函数的使用:

conftest.py中可以定义一些钩子函数,例如pytest_configurepytest_unconfigure等,以在Pytest的不同生命周期阶段执行特定的操作。

# conftest.py
​
def pytest_configure(config):
    print("运行配置钩子...")
​
def pytest_unconfigure(config):
    print("运行非配置钩子...")

这些钩子函数允许你在测试运行的不同阶段执行自定义的逻辑。

结语

掌握Pytest的ini文件和conftest文件的使用技巧,可以提高测试脚本的可维护性和可扩展性。通过配置文件,可以定义全局的测试行为;而conftest.py文件则允许在不同测试模块之间共享Fixture、参数化Fixture、添加自定义命令行选项等,使得测试代码更加灵活、高效。这些技巧为Pytest提供了强大的扩展性,使其适用于各种测试场景。那么本次的分享就到这里了,我们下次再见👋🏻

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值