2017-05-16 6 views
0

Django Rest Frameworkを使用してREST-ful APIを構築しています。以前はREST APIとの統合を処理していましたが、テストのためのテスト用APIキー、データの送信とモックデータの返送を可能にするキーはシステムに格納しません。私は私のAPIでこの同じ機能を実装しようとしていますが、まだこれを行う方法を見つけることができませんでした。Django Rest FrameworkとTokenAuthenticationを使用してモックデータを返すためのテストAPI

答えて

0

でdocumetationに従ってください

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...... 

これは基本的な機能で、より複雑にする必要があります

+0

ありがとう、@MaximeK! – panatale1

0

最初に、mommyをインストールして、テストに模擬データを作成することができます。 は、だからあなたのtests.pyであなたはSTATUS_CODEと応答をチェックし、あなたのAPIにテストを作成することができます。その後、

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

+0

ママはユニットテストの代わりにライブ統合テストを行いますか? – panatale1

+0

私はそうは思わない! 'manage.py test'を実行している偽のデータベースを作成するためです。しかし、あなたのシステムにキーが与えられたという要求を保存したくない場合は、[複数のデータベース](https://docs.djangoproject.com/ja/1.11/topics/db/multi-db/)を使う方が良いでしょう。あなたは実際のデータベースからデータベースをテストすることができます。 –

関連する問題