2016-12-28 7 views
1

を記録し、私はこのようになりますdjango_rest_frameworkテスト(問題は、通常のDjangoのテストと同じです)持っている:私は失敗したURLを持っているDjangoのテストプリントや失敗

from rest_framework.test import APITestCase 

class APITests(APITestCase): 

    # tests for unauthorized access 
    def test_unauthorized(self): 
     ... 
     for api in apipoints: 
      response = self.client.options(api) 
      self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) 

を、端末はこのことを示しています。

FAIL: test_unauthorized (app.misuper.tests.APITests) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/alejandro/...",

line 64, in test_unauthorized

self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) AssertionError: 200 != 403

[OK]をクリックして、どのURLがテストに失敗したかを知ることができますか?私は、ログインを必要とするすべてのURLを反復しています。つまり、多くのURLです。テストに失敗したURLをどのように印刷できますか?簡単な応急処置のために

答えて

1

は、あなたがアサーションメソッドの三番目のパラメータでapipointを渡すことができますユニットテストの精神で

>>> from unittest import TestCase 
>>> TestCase('__init__').assertEqual(1, 2, msg='teh thing is b0rked') 
AssertionError: teh thing is b0rked 

を、これらは本当にむしろのみよりも、それぞれ異なる試験方法でなければなりませんループを持つ1つのテストメソッド。より多くの乾燥を助けるためにnose_parameterizedを調べてください。あなたはこのような試験方法を飾るでしょう:

from nose_parameterized import parameterized 

@parameterized.expand(apipoints) 
def test_unauthorized(self, apipoint): 
    response = self.client.options(apipoint) 
    self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN) 

デコレータは、彼らが通過できるように、/互いに独立して失敗し、各エンドポイントの異なる試験方法を生成します。

このパッケージの名前はit's also compatible with other runnersunittestpy.testなどですが、このパッケージの名前はnoseです。

関連する問題