2017-03-14 3 views
0

私のDjangoアプリケーションの外部に面したAPIのユニットテストケースを作成しようとしています。私はtempcontentという2つのフィールドを持つモデルDummyを持っています。次の関数は、contentフィールドを取得するために第三者から呼び出されます。 tempは、インデックスされたユニークキーです。外部テスト機能をユニットテストする

@csrf_exempt 
def fetch_dummy_content(request): 
    try: 
     temp = request.GET.get("temp") 
     dummy_obj = Dummy.objects.get(temp=temp) 
    except Dummy.DoesNotExist: 
     content = 'Object not found.' 
    else: 
     content = dummy_obj.content 

    return HttpResponse(content, content_type='text/plain') 

以下のユニットテストケースがあります。

def test_dummy_content(self): 
    params = { 
     'temp': 'abc' 
    } 
    dummy_obj = mommy.make(
     'Dummy', 
     temp='abc', 
     content='Hello World' 
    ) 
    response = self.client.get(
     '/fetch_dummy_content/', 
     params=params 
    ) 
    self.assertEqual(response.status_code, 200) 
    self.assertEqual(response.content, 'Hello World') 

私はテストケースを実行するたびに、それがexceptionに入り、Object not found.の代わりHello Worldを返します。さらにデバッグすると、私はparamsにそれを渡していますが、要求オブジェクトのビュー内の関数からのtempは常にNoneであることがわかりました。

私は何かを見つけられず、理解できないかもしれません。これらの種類の機能をテストする適切な方法は何ですか?

答えて

1

There's no params parameter for the getなど、クライアント上の他の機能のいずれかを使用すると、おそらくdataが考えられます。

response = self.client.get(
    '/fetch_dummy_content/', 
    data=params 
) 

とにかく第二引数ですので、あなたはあまりにもself.client.get('/fetch_dummy_content/', params)を行うことができます。

環境に未知のパラメータが含まれているため、間違った名前を使用したときにエラーが発生しなかった理由が説明されています。

+0

ありがとうございました。 – Pattu

関連する問題