将pytest fixture定义为上下文管理器。

pytest-contextfixture的Python项目详细描述


pytest contextfixture允许将pytest fixture定义为上下文管理器

contextfixture的工作方式与标准fixture类似,但它允许 作为生成器写入的定义。这样就简化了拆卸过程 代码并允许在fixture中使用其他上下文管理器。

安装

pip安装pytest contextfixture

用法

考虑这个例子,使用标准的pytest.fixture

import pytest

@pytest.fixture
def dependency(request)
    def teardown():
        # fixture teardown code goes here
    request.addfinalizer(teardown)

    return 1234

def test_foo(dependency):
    assert fn_under_test(dependency) == 'expected'

对于pytest.contextfixture,这相当于:

import pytest

@pytest.contextfixture
def dependency(request):
    # fixture setup code goes here
    yield 1234
    # fixture teardown code goes here

def test_foo(dependency):
    assert fn_under_test(dependency) == 'expected'

虽然这是一个稍微好一点的语法,但是在使用其他上下文管理器时 要获取设备的依赖项,这将变得更有用:

@pytest_contextfixture
def dependency(request):
    with setup_something():
        with setup_something_else() as d:
            yield d

def test_foo(dependency):
    assert fn_under_test(dependency) == 'expected'

然后test_foo将在setup_something和 安排其他事情。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java应该考虑使用DTO来代替Spring控制器层吗?   java为什么要将Maven与Git结合起来?   java试图将CSV转换为XLSX,但使用了错误的逗号拆分列   mysql Spring 3+Hibernate:java。sql。BatchUpdateException:无法添加或更新子行(ManyToMany)   java基本字符串反转器   java无法使用RestControllerAdvice为身份验证失败生成自定义错误消息   java当只允许SQLException时,如何抛出EOFEException?   java如何创建播放模块?   Android中匿名类的java实例化异常问题   java两个停靠组件,其中第二个组件填充剩余空间   java如何在按钮延迟时启用它   Java中正在运行的应用程序中的后台进程   java我正试图从一个字符串打印出这个字符输出   如何使用java socket通过两个不同的wifi连接两台电脑?   javaapachecamel:如何将分层数据从数据库转换为pojo   java Webrtc:OniconConnectionChange和onConnectionChange之间有什么区别   java如何重写已经创建的JTable方法   爪哇扫雷机堆垛机   雅加达ee Java ee EJB 3.0 Glassfish