0

私は失敗しているテストがあります:

======================================================================  
    FAIL: test_register_should_create_UserProfile (APP.forum.tests.test_views.UserTestCAse)  
    ----------------------------------------------------------------------  
    Traceback (most recent call last):  
      File "/Users/Bryan/work/app/../app/forum/tests/test_views.py", line 25, in test_register_should_create_UserProfile  
        self.assertEqual(response.status_code, 200)  
    AssertionError: 404 != 200

テストは次のとおりです。

class UserTestCAse(TestCase):  
  def test_register_should_create_UserProfile(self):  
    from django.test.client import Client  
    c = Client()  
    # I'm skipping account/signin/ because that requires me to visit Google.  
    response = c.post('account/signin/complete/', {'username': 'john', "email":'john@beatles.com', u'bnewaccount': 'Signup'}) 
    # request.POST from pdb() session with breakpoint in register()
    # <QueryDict: {u'username': [u'john'], u'email': [u'john@beatles.com'], u'bnewaccount': [u'Signup']}>

    #How do I inspect what is breaking in the test case?  
    #How do I run the test client in the shell?  
    self.assertEqual(response.status_code, 200)  

    user = User.objects.get(username ='john')  
    self.assertTrue(user.get_profile())  

とにかく、この応答が200を返さない理由を確認できますか?

シェルでTestClient()を使用しようとしましたが、機能しませんでした。

In [1]: from django.test.client import Client  

In [2]: c = Client()  

In [3]: response = c.post('account/signin/complete/', {'username': 'john', "email":'john@beatles.com', u'bnewaccount': 'Signup'})  
---------------------------------------------------------------------------  

KeyError: 'tried'  
4

2 に答える 2

3

これは正しく見えません。

user = User.objects.get('username'=='john')  

クエリを実行する場合は、チュートリアルに示されているスタイルでクエリを作成する必要があります

http://docs.djangoproject.com/en/1.1/topics/db/queries/#topics-db-queries

user = User.objects.get( username = 'john' ) 

例えば。

デバッグするには、コマンドラインで実行できます。それが私たちの仕事です。Djangoチュートリアルでは、すべての例がコマンドラインでインタラクティブに入力されたかのように表示されます。

>>> from myapp.models import Client
>>> Client.objects.get( name = 'value' )

通常、コマンドラインから単体テストを実行しようとはしません。ユニットテストフレームワークがあなたのために行うすべてのことのために、それを行うのは難しいです。

通常は、アプリケーションのビュー関数ステートメントを一度に1つずつステップ実行して、ビュー関数が実際に機能することを確認します。

于 2010-02-23T22:05:19.697 に答える
2

予期しない 404 が返された場合、Django エラー ページにエラーが表示されます (DEBUG が True であると仮定します)。その場合、print response.contentそのトレースバックを表示し、それを切り取ってブラウザに貼り付けることができます。

また、対話型デバッガーを使用して実行中のテストに割り込むことができることを忘れないでください。pdbこれは、実行中のコードの他の形式と同様に、応答を動的に検査できるようにするためです。または、投稿の前にブレークポイントを配置して、ビューをステップ実行できるようにすることもできます。

ただし、もう一度見てみると、頭文字が欠落しているため、URL が一致していないと思われます\

于 2010-02-23T23:09:16.393 に答える