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']) #
相关推荐
西游音月1 天前
(2)pytest+Selenium自动化测试-环境准备
selenium·测试工具·pytest
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 23--数据驱动--参数化处理 Yaml 文件
python·学习·测试工具·pytest
我的xiaodoujiao4 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 22--数据驱动--参数化处理 Json 文件
python·学习·测试工具·pytest
胜天半月子5 天前
Python自动化测试 | 快速认识并了解pytest的基本使用
服务器·python·pytest
北珣.9 天前
自动化框架pytest基础
自动化·pytest
程序员杰哥10 天前
Pytest之收集用例规则与运行指定用例
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
学习3人组10 天前
Python + requests + pytest + allure + Jenkins 构建完整的接口自动化测试框架
python·jenkins·pytest
shao91851613 天前
Gradio全解14——使用Gradio构建MCP的服务器与客户端(4)——Python包命令:uv与uvx实战
pytest·uv·1024程序员节·npx·uvx·uv pip·ruff
我的xiaodoujiao14 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 20--PO(POM) 设计模式和用例撰写
python·学习·测试工具·设计模式·pytest
sky0Lan15 天前
一个类似 pytest 的 html 报告
android·html·pytest