首页 > 解决方案 > 我将如何对这个以请求为参数的函数进行单元测试?

问题描述

您好,我是单元测试的新手,我只是无法理解它。这是我需要测试的最简单的功能,我什至不知道如何做到这一点。我知道我需要传递一个我认为的模拟请求对象,但除此之外我很迷茫。可以使用一些指导。

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

标签: djangounit-testing

解决方案


您可以使用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文档以获取更多详细信息


推荐阅读