Django 我如何对这个将请求作为参数的函数进行单元测试?

Django 我如何对这个将请求作为参数的函数进行单元测试?,django,unit-testing,Django,Unit Testing,您好,我对单元测试是全新的,我只是不能把我的头围绕它。这是我需要测试的最简单的函数,我甚至不知道如何做。我知道我需要传递一个模拟请求对象,我想,但除此之外,我非常迷茫。我需要一些指导 def get_all_zones(request): user = request.user all_site = get_objects_for_user(user, 'sitehotspot_portal', klass=SiteHotspot).values_list('uid', 'nam

您好,我对单元测试是全新的,我只是不能把我的头围绕它。这是我需要测试的最简单的函数,我甚至不知道如何做。我知道我需要传递一个模拟请求对象,我想,但除此之外,我非常迷茫。我需要一些指导

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)```

此方法是否在
views.py
文件中定义?Django提供了一个
客户端
对象,用于创建和向视图发送请求。这反过来又模拟了用户与应用程序视图的交互

from django.test import Client

def test_get_all_zones(request):
   client = Client()
   response = client.get(reverse('your_app:get_all_zones_url'))

   # Test logic
Django有一些非常好的文档:


您可以使用
RequestFactory
创建请求实例并将其传递给视图:

来自django.test导入请求工厂的

def test_get_all_区域():
factory=RequestFactory()
request=factory.get('/url/to/get_all_zones'))
响应=获取所有区域(请求)
断言某事
有关更多详细信息,请查看