django - 我将如何对这个以请求为参数的函数进行单元测试?
问题描述
您好,我是单元测试的新手,我只是无法理解它。这是我需要测试的最简单的功能,我什至不知道如何做到这一点。我知道我需要传递一个我认为的模拟请求对象,但除此之外我很迷茫。可以使用一些指导。
def get_all_zones(request):
user = request.user
all_site = get_objects_for_user(user, 'sitehotspot_portal', klass=SiteHotspot).values_list('uid', 'name')
all_site = [list(i) for i in all_site]
all_area = get_objects_for_user(user, 'areashotspot_portal', klass=AreasHotspot).values_list('uid', 'name')
all_area = [list(i) for i in all_area]
all_sphere = get_objects_for_user(user, 'spherehotspot_portal', klass=SphereHotspot).values_list('uid', 'name')
all_sphere = [list(i) for i in all_sphere]
all_zones = all_area + all_site + all_sphere
return(all_zones)```
解决方案
您可以使用RequestFactory
创建请求的实例并将其传递给您的视图:
from django.test import RequestFactory
def test_get_all_zones():
factory = RequestFactory()
request = factory.get('/url/to/get_all_zones')
response = get_all_zones(request)
assert response.something
请查看RequestFactory
文档以获取更多详细信息