Django rest framework Django Rest框架在视图中测试异常

Django rest framework Django Rest框架在视图中测试异常,django-rest-framework,Django Rest Framework,我有一个从ApitTestCase继承的测试类。这个测试类有一个测试用例,它试图模拟被测试视图中的另一个对象调用以引发异常的函数。然而,我的例外是,我从来没有被嘲笑过。如果我没有从APITestCase继承测试用例,那么测试用例基本上可以按预期工作 APITestCase是否隐藏或阻止异常向上传播 这是我的视图文件: views.py test.py 异常未被引发 class JobPostTest(APITestCase): def setUp(self):

我有一个从ApitTestCase继承的测试类。这个测试类有一个测试用例,它试图模拟被测试视图中的另一个对象调用以引发异常的函数。然而,我的例外是,我从来没有被嘲笑过。如果我没有从APITestCase继承测试用例,那么测试用例基本上可以按预期工作

APITestCase是否隐藏或阻止异常向上传播

这是我的视图文件:

views.py test.py 异常未被引发

class JobPostTest(APITestCase):
    def setUp(self):        
        self.valid_job = """{
                                'name': 'foo',
                                'tasks':
                                    [
                                        {
                                            'name':'test_task'
                                        }
                                    ]
                            }"""

    @patch('app.views.Foo')
    def test_create_job_fails(self, mock):


        error = ValidationError

        mock.bar.side_effect = error                
        with self.assertRaises(error):
            self.client.post('/api/jobs/', self.valid_job, format='json')
class FooTest(TestCase):
    @patch('app.views.Foo')
    def test_bar(self, mock):
        mock.bar.side_effect=ValidationError
        foo2 = Foo2()
        self.assertRaises(ValidationError, foo2.bar2(1))
异常是否引发

class JobPostTest(APITestCase):
    def setUp(self):        
        self.valid_job = """{
                                'name': 'foo',
                                'tasks':
                                    [
                                        {
                                            'name':'test_task'
                                        }
                                    ]
                            }"""

    @patch('app.views.Foo')
    def test_create_job_fails(self, mock):


        error = ValidationError

        mock.bar.side_effect = error                
        with self.assertRaises(error):
            self.client.post('/api/jobs/', self.valid_job, format='json')
class FooTest(TestCase):
    @patch('app.views.Foo')
    def test_bar(self, mock):
        mock.bar.side_effect=ValidationError
        foo2 = Foo2()
        self.assertRaises(ValidationError, foo2.bar2(1))

我不知道您何时从Foo和Foo2调用视图,以及在第二个场景中如何引发异常。你确定这段代码是正确的吗?那只是为了表明模拟和类似的方法是有效的。看来我需要一路模拟才能让我的测试用例正常工作:
@patch('app.views.Foo.bar')
。据我所知,这个问题今天仍然存在。