我正在使用Django Rest Framework构建REST-ful API。我之前已经处理过与REST API的集成,并且已经获得了专门用于测试集成的测试API密钥,允许您发送数据并返回模拟数据的密钥,但是没有将数据放入系统中。我正在尝试在我的API中实现相同的功能,但我还没有找到办法这样做。
答案 0 :(得分:0)
首先,您可以安装mommy以在测试中创建模拟数据。 因此,在tests.py中,您可以为API创建测试,检查status_code和响应:
def test(self):
user = mommy.make(User) # Create a fake user
token = Token.objects.get(user__username=user.username) # Generate a token
self.client.credentials(HTTP_AUTHORIZATION='Token ' + token.key) # Token for your request
response = self.client.post("url", your_data) # POST in your URL
self.assertEqual(response.status_code, status.HTTP_201_CREATED) # Status Code of Creation
self.assertEqual(User.objects.last().first_name, user.first_name) # Check the fields created
然后运行运行python manage.py test
的测试或按照DRF
答案 1 :(得分:0)
你可以使用一些装饰器来做到这一点:)
from django.contrib.auth import authenticate
def mock_funcname(func):
def wrapper(request, *args, **kwargs):
user = authenticate(token=request.REQUEST['token'])
if user.id == 'TEST USER ID':
return Response({'detail': "Some stuff mocked for this user :)"})
return func(request, *args, **kwargs)
return wrapper
所以现在你可以把它像其他装饰一样:
@api_view(['POST'])
@permission_classes((IsAuthenticated,))
@mock_funcname
def funcname(request, pid=None):
return response......
它需要使它更复杂的基本功能