pytest - 使多个测试在同一个数组

时间:2018-01-03 15:09:31

标签: python django pytest

我试图避免使用@pytest.fixture(scope='module')语法为多个测试多次创建相同的django对象。

from bots.models import Bot


@pytest.fixture(scope='module')
def forwarding_bot():
    (bot, created) = Bot.objects.get_or_create(
        name="test_bot",
        user=get_user_model().objects.create_user(username='test_user'),
        forward_http_requests_to='https://httpbin.org/post'
    )
    return bot


def test_get_bot_by_pk(forwarding_bot):
    print(f'test_get_bot_by_pk: bot count: {Bot.objects.count()}')


def test_get_bot_by_uuid(forwarding_bot):
    print(f'test_get_bot_by_uuid: bot count: {Bot.objects.count()}')

当我运行pytest时,我得到了这个输出:

test_get_bot_by_pk: bot count: 1
test_get_bot_by_uuid: bot count: 0

我理解这个的原因。每个模块确实会触发fixture函数一次,但由于它的代码创建了一个db对象 - 只有第一个测试在DB中找到它。

问题是 - 如何在同一个数据库和同一个夹具上进行多次测试?我是pytest的新手,所以这对我来说是个挑战。

0 个答案:

没有答案