Django用户在运行测试时不在请求对象中

时间:2014-02-10 17:28:40

标签: python django unit-testing request

我正在运行测试,记录用户,发送一些POST数据,并分析响应。虽然我可以硬编码用户信息,但我不明白为什么我无法从user对象访问request对象。以下是我的测试结果:

class CompleteGuidedSetupTestCase(TestCase):
    fixtures = ['test_data.json']

    def setUp(self):
        self.client = Client()
        self.client.login(username='test@test.test', password='testtest')

    def test_complete_guided_setup_defaults(self):
        response = self.client.post('/url', {
            'data': data
        })

        # reponse.request.user doesn't work either
        user = response.request['user']

我也尝试在self.client上的某处访问用户对象,但它似乎不存在。必须有一些方法来访问它。

此外,调用此视图的视图不会呈现给模板,因此它不在模板上下文中。

1 个答案:

答案 0 :(得分:2)

Django文档声明response.request是模拟测试的响应数据。这与视图中使用的request对象不同,因此您无法以这种方式访问​​user

测试客户端不存储用户,它存储一个cookie,表明它以该用户身份登录。

在您的测试方法或setUp方法中,您可以使用以下命令从数据库中获取用户:

user = User.objects.get(username='test@test.test')