如何在不访问数据库的情况下在单元测试中模拟Django模型query_set?

时间:2018-11-19 23:30:31

标签: python django django-models pytest-django

我具有以下功能:

def build_dict():
    app_config = {}
    for keypair in models.Applify.objects.all():
        app_config.update({keypair.key: keypair.value})

    return app_config

我想做的是有一个测试文件,在其中我伪造Applify查询集。到目前为止,我没有用的是这样的:

test_mock_list = [
    mock.Mock(id=1, key='something_1', value=False),
    mock.Mock(id=2, key='something_2', value=False)
]

with mock.patch('models.Applify.objects.all', return_value=test_mock_list):
    # perform assertion test.

我得到的是一个错误的说法。 Failed: Database access not allowed, use the "django_db" mark, or the "db" or "transactional_db" fixtures to enable it.

我并没有尝试实际连接到数据库,所以我不想使用@pytest.mark.django_db装饰器。那么如何才能成功伪造查询集呢?

0 个答案:

没有答案