感谢您抽出时间。
我想知道在测试视图时,最好使用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