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