pytest.mark.django_db和mock.patch装饰器不能一起工作

时间:2015-02-11 22:10:17

标签: python django pytest

我试图在pytest测试中模拟一个函数,而模拟似乎根本不起作用。

这是我的考试

@pytest.mark.django_db
@patch('apps.titles.logic.get_similar_titles')
def test_get_recommended_titles_for_results(self, mock_get_similar_titles,
                                            set_up):
    mock_get_similar_titles.return_value = OrderedDict([
        ('uuid-1', 165),
        ('uuid-2', 163),
        ('uuid-6', 135),
    ])
    match_signals = []
    results = get_similar_titles(
        match_signals=match_signals,
        title=set_up['title']
    )

    assert results.items() == mock_get_similar_titles.return_value.items()

使用@pytest装饰器时是否存在一些兼容性问题,或者我犯了错误?

感谢

2 个答案:

答案 0 :(得分:0)

在这里工作,但不应该在最后一行读到:

assert results.items() == mock_get_similar_titles().items()

修改:文档seem to suggest so

答案 1 :(得分:0)

你正在嘲笑你正在测试的功能。您希望模拟您正在测试的代码调用/使用的函数或对象,而不是您正在测试的代码。