【发布时间】:2019-10-16 10:36:33
【问题描述】:
我不确定测试视图/权限类中使用的函数的正确方法是什么。
这是我的请求的有效负载:
{"name": "John"}
这是我要测试的功能:
def get_name(request):
return request.data['name']
这是将使用该函数的视图:
class SomeView(APIView):
def get(self, request):
name = get_name(request=request)
return Response(status=200)
我应该如何创建一个夹具来测试get_name 功能?我试过这个:
@pytest.fixture
def request_fixture()
factory = APIRequestFactory()
return factory.get(
path='',
data={"name": "John"},
format='json')
def test_get_name(request_fixture):
assert get_name(request=request_fixture) == "John"
但我收到一个错误:
AttributeError: 'WSGIRequest' object has no attribute data.
一种解决方法似乎是解码body 属性:
def get_name(request):
data = json.loads(request.body.decode('utf-8'))
return data['name']
但这感觉不是正确的方法,我想我错过了WSGIRequest 类的一些内容。有人可以向我解释它应该如何测试吗?如果我也可以使用相同的夹具来测试视图,那就太好了。
【问题讨论】:
标签: python django rest unit-testing django-rest-framework