pytest入门九:feature

fixture是pytest特有的功能,用以在测试执行前和执行后进行必要的准备和清理工作。使用pytest.fixture标识,定义在函数前面 。在你编写测试函数的时候,你可以将此函数名称做为传入参数,pytest将会以依赖注入方式,将该函数的返回值作为测试函数的传入参数。

主要的目的是为了提供一种可靠和可重复性的手段去运行那些最基本的测试内容。

从功能上看来,与setup、teardown相似,但是优势明显:

调用方法有2种:

  • 1、在测试用例/测试类上面加上:@pytest.mark.usefixture("fixture的函数名字")

  • 2、将fixture函数名,作为测试用例函数的参数。可以不加@pytest.mark.usefixture("fixture的函数名字")

复制代码
import pytest


@pytest.fixture()
def init2():
    print("用例执行之前,执行的代码")  # 只有模块执行之前的前置准备代码

@pytest.mark.usefixtures('init2')
def test_1():
    print('test_2')

@pytest.mark.usefixtures('init2')
def test_2():
    print('test_2')

if __name__ == "__main__":
    pytest.main(['-v', '-s','test3.py']) #
复制代码
import pytest

@pytest.fixture
def init():
    print("用例执行之前,执行的代码")  # 前置代码
    yield 'hello'
    print("用例执行之后,执行的代码")  # 后置代码


@pytest.fixture()
def init2():
    print("用例执行之前,执行的代码")  # 只有模块执行之前的前置准备代码


def test_1(init):
    print('test_2',init)

@pytest.mark.usefixtures('init2')
def test_2():
    print('test_2')

if __name__ == "__main__":
    pytest.main(['-v', '-s','test3.py']) #
复制代码
import pytest

@pytest.fixture
def init():
    print("用例执行之前,执行的代码")  # 前置代码
    yield 'hello'
    print("用例执行之后,执行的代码")  # 后置代码

@pytest.fixture()
def init2():
    print("用例执行之前,执行的代码")  # 只有模块执行之前的前置准备代码


def test_1(init):
    print('test_2',init)


@pytest.mark.usefixtures('init2')
def test_2():
    print('test_2')

@pytest.fixture()
def data():
    return "hello"

def test_data(data):
    print("============",data)




if __name__ == "__main__":
    pytest.main(['-v', '-s','test3.py']) #

feature 嵌套

复制代码
import pytest

@pytest.fixture
def init():
    print("用例执行之前,执行的代码")  # 前置代码
    yield 'hello'
    print("用例执行之后,执行的代码")  # 后置代码

@pytest.fixture
def init3(init):
    print("用例执行2之前,执行的代码")  # 前置代码
    yield init
    print("用例执行2之后,执行的代码")  # 后置代码


def test_3(init3):
    assert init3 == 'hello'





if __name__ == "__main__":
    pytest.main(['-v', '-s','test3.py']) #
相关推荐
X1A0RAN6 小时前
pytest 动态报告:数据可视化篇 —— 用 Golang + Echo 打造自动化测试任务可视化平台
信息可视化·golang·pytest
吨吨ai10 小时前
Codex 实战:用 Git 分支 + pytest 构建可回滚的 AI 开发流程(2026年8月27日)
人工智能·git·pytest
冷凝娇3 天前
【Pytest】2026 学习总结
学习·pytest
测试老哥5 天前
Pytest自动化测试框架tep环境变量、fixtures、用例三者之间的关系
自动化测试·软件测试·python·测试工具·测试用例·pytest·职场发展
小小测试开发5 天前
Agent 安全测试:pytest 原生红队框架 RAMPART 实战解析
人工智能·pytest
不拘一格的叶三少9 天前
Pytest + Playwright 自动化测试工程设计要点 & 目录结构
测试工具·pytest
努力搬砖的咸鱼10 天前
意图理解:让Agent从需求描述自动生成Pytest测试策略
人工智能·python·ai·单元测试·pytest·agent