pytest中的参数化测试夹具

时间:2018-01-10 19:20:34

标签: python pytest

我有一个测试套件,我在其中创建对象的实例,并用我的模拟消费者替换该对象中的kafka使用者,例如:

def mock_consumer(fixtures):
    with open(fixtures) as fixturefile:
        messages = fixturefile.readlines()
    for msg in messages:
        encoded = mock.MagicMock()
        encoded.value.decode = lambda x: msg
        yield encoded

然后我使用mock_consumer来创建我的对象的实例:

@pytest.fixture
@patch('service.producer.kafka_init')
def msg_producer_test1(mock_kafka_init):
    pr = producer(config)
    pr.balanced_consumer = mock_consumer('tests/test1.json')
    return pr

然后我写测试:

def test_that_we_process_message_correctly(msg_producer_test1):
    msg_producer_test1.process()
    assert (result = what_we_expect)

但是我想把它抽象出去,所以我会做类似的事情:

def test_we_process_message_correctly(mock_msg_producer, 'tests/test1.json')
    mock_msg_producer.process()

最好的方法是什么?

0 个答案:

没有答案