在TestCase中全部运行时,Django中的模拟测试无法正常工作,但可以一个接一个地工作


问题内容

在Django中测试视图时,我使用python模拟来修补一些函数和类。

如果我独立运行每个测试,则所有测试均有效。但是,当我运行TestCase时,某些测试无法正常工作(补丁无效)。

class ViewsTest(TestCase):
    @mock.patch('extras.utils.get_user_category')
    def test_select_test(self, mock_method):        
        mock_method.return_value = Category(id=1, name="Foo")

        response = self.client.post(reverse('select_test', args=['Foo']))

        self.assertEqual(200, self.client.post(reverse('select')).status_code)

    @mock.patch('user_profile.models.Profile.categories')
    def test_category_view(self, mock_related):      
        mock_related.all.return_value = []

        self.assertEqual(200, self.client.post(reverse('category')).status_code)

我有一个打印int的视图,可以看到每个模拟方法,当它工作时可以打印:

MagicMock名称=’get_user_category’id =‘162815756’

当不起作用时,我会看到:

函数get_user_category位于0x8e0fb8c

我尝试了修补程序start()和stop(),但仍然遇到问题。

问题是什么?


问题答案:

我有同样的问题。您可能指出了错误的方式。

检查此链接。它帮助了我。