Django中可复用的测试断言帮助器

2 投票
1 回答
884 浏览
提问于 2025-04-18 07:58

我正在为一个Django 1.4的应用编写单元测试。在我的tests.py文件中,我想要一个可以在测试类中使用的辅助函数。这个辅助函数是这样定义的:

def error_outcome(self, response):
    self.assertEqual(response.status_code, 403)
    data = json.loads(response._get_content())
    self.assertEquals(data, {'error': 1})

下面是一个使用这个辅助函数的测试类的例子:

class SomeTest(TestCase):
    def test_foo(self):    
        request = RequestFactory().post('/someurl')
        response = view_method(request)
        error_outcome(self, response)

这样做是可以的,但其实不太好,因为这个辅助函数不应该使用self,因为它是一个函数,而不是一个方法。有没有什么办法可以让它在不使用self的情况下工作呢?谢谢。

1 个回答

2

创建一个基础测试用例类,并定义一个叫做 error_outcome() 的方法:

class BaseTestCase(TestCase):
    def error_outcome(self, response):
        self.assertEqual(response.status_code, 403)
        data = json.loads(response._get_content())
        self.assertEquals(data, {'error': 1})

class SomeTest(BaseTestCase):
    def test_foo(self):    
        request = RequestFactory().post('/someurl')
        response = view_method(request)
        self.error_outcome(response)

撰写回答