我正在编写单元测试并使用request
创建RequestFactory
对象,因为几乎我的所有应用都处于登录状态,并且我需要设置request.user
,但是这种方式无法访问{{1 }},以测试我的视图作为响应的一部分发送的值。
在使用测试客户端时,我可以这样context
来获取上下文并针对它编写断言。
测试需要登录的视图的正确方法是什么?我还尝试使用调试器检查response.context_data['form']
对象,但找不到类似response
的东西。
答案 0 :(得分:3)
我不明白您为什么不使用测试客户端。它支持logging a user in,然后您可以根据需要在上下文中进行断言。
答案 1 :(得分:0)
测试客户端会通过可能不需要的中间件,这会使测试变慢。 测试应遵循F.I.R.S.T 快速,独立,可重复,自验证且彻底。
class AddNewTopicTest(TestCase):
def setUp(self):
self.user = User.objects.create_user(
username="sourabh", email="email@something.com", password="Somepassword"
)
self.factory = RequestFactory()
def test_csrf_token_is_present_in_get_request_to_create_topic_view(self):
kwargs = {"slug": "some-args"}
request = self.factory.get(reverse("new_topic", args=(self.board_obj.slug,)))
request.user = self.user
response = CreateTopicView.as_view()(request, **kwargs)
self.assertTrue(response.context_data)