django-pytest - RequestFactory.get or client.get


感谢您抽出时间。

我想知道在测试视图时,最好使用RequestFactory(.get(或Client(.get((创建请求对象,还是直接调用视图

RequestFactory((:

from django.test import RequestFactory
from django.urls import reverse
def test_profile_view(self):
p1 = mixer.blend(Profile)
path = reverse('profile', kwargs={'pk': p1.id})
request =  RequestFactory().get(path)
request.user = p1.user
response2 = views.profile_view(request, pk=p1.id)
assert response.status_code == 200
assert response.streaming == False
assert response2.charset == 'utf-8'
assert response2.status_code  == 200

客户端((:

from django.test import Client


class TestView():
def test_profile_view(self):
p1 = mixer.blend(Profile)
path = reverse('profile', kwargs={'pk': p1.id})
response=  Client().get(path)
response.user = p1.user
response2 = views.profile_view(request, pk=p1.id)
assert response.status_code == 200
assert response.streaming == False
assert response2.charset == 'utf-8'
assert response2.status_code  == 200

我想了解其中的区别,请

如果使用RequestFactory并调用视图,则可以避免使用中间件。这样做的好处是执行的代码更少,测试速度更快。

但它有一个缺点,生产现场的情况可能会有所不同,因为在生产时会调用中间件。

我使用Django已经好几年了,我一次又一次地不确定什么更好。这没什么大区别。

BTW:这看起来很奇怪:response.user = p1.user

最新更新