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']) #
相关推荐
摘星编程5 天前
AI 帮我写单测:pytest 覆盖率提升 40% 的协作日志
人工智能·pytest·测试驱动开发·代码覆盖率·ai协作开发
lucia_zl7 天前
pytest并发测试,资源问题导致用例失败解决办法
pytest
鱼鱼说测试8 天前
Selenium4+Pytest自动化测试框架实战
pytest
XYiFfang14 天前
【Pytest】解决Pytest中Teardown钩子的TypeError:实例方法与类方法的调用差异
python·pytest
Kingairy16 天前
Pytest 插件:pytest_runtest_protocol
python·pytest
AIZHINAN16 天前
Pytest 插件介绍和开发
测试工具·pytest·插件开发
灰阳阳18 天前
替身演员的艺术:pytest-mock 从入门到飙戏
自动化测试·python·pytest·unit testing·pytest-mock
年年测试21 天前
Playwright与PyTest结合指南
pytest
focksorCr22 天前
pytest 并发执行用例(基于受限的测试资源)
python·pytest