【问题标题】:Pytest fixture: setup, teardown and code running between each testPytest 夹具:在每个测试之间运行的设置、拆卸和代码
【发布时间】:2018-08-11 19:44:53
【问题描述】:

我正在尝试使用 pytest 来测试我正在编写的模块。该模块是具有 LONG 启动时间的进程的包装器。因此,我想确保我有正确的设置/拆卸逻辑,以确保初始化不会多次发生。

我当前的代码如下所示:

import pytest
import leelaZeroWrapper

@pytest.fixture(scope='module')
def leela(request):
    leela = leelaZeroWrapper.LeelaWrapper()
    def quit():
        leela.quit()
    request.addfinalizer(quit)
    return leela

def test_single_play(leela):
    leela.reset()
    result = leela.play('b', 'a11')
    assert result == [{'color': 'black', 'loc': 'a11'}]

def test_single_play_uppercase(leela):
    leela.reset()
    result = leela.play('WHITE', 'A11')
    assert result == [{'color': 'white', 'loc': 'a11'}]

def test_reset(leela):
    leela.reset()
    leela.play('b', 'a11')
    leela.play('w', 'a13')
    leela.reset()
    assert leela.current_board == []
    assert leela.current_move == 0

我注意到我的所有测试都将从重置我的模块的调用开始!有什么办法可以将这个添加到夹具中,或者您将如何解决?

我想要的伪代码:

@pytest.fixture(scope='module')
def leela(request):
    leela = leelaZeroWrapper.LeelaWrapper()
    def quit():
        leela.quit()
    def reset():
        leela.reset()
    request.addfinalizer(quit)
    request.add_between_test_resetter(reset)
    return leela

如果初始设置不是那么繁重,我会跳过这个,让类初始化每个测试。我试图查看请求对象的文档,但找不到合适的方法。我认为这必须以其他方式解决。有什么想法吗?

【问题讨论】:

    标签: python pytest fixture


    【解决方案1】:

    只需引入另一个执行重置的夹具。使其成为自动使用的夹具,以便在每次测试之前自动执行:

    @pytest.fixture(scope='module')
    def leela():
        leela = leelaZeroWrapper.LeelaWrapper()
        yield leela
        leela.quit()
    
    @pytest.fixture(autouse=True)
    def reset(leela):
        leela.reset()
    
    
    def test_single_play(leela):
        result = leela.play('b', 'a11')
        assert result == [{'color': 'black', 'loc': 'a11'}]
    

    默认的fixture作用域是function,所以resetfixture会在模块中的每个测试之前重新运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-15
      • 2017-05-02
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多