2016-05-09 8 views
1

私は、ユーザーがログインしているかどうかに応じて実際に辞書を返すサービスを持っています。私はdjango rest apiでサービスを使い、 APIビューのロジック。 今、私はこのAPIのユニットテストを作成したいとユーザーが持つ匿名であれば、ユーザはありません電子メール ログインまたは匿名ユーザーのためのdjangoユニットテスト

  • と匿名の場合、ユーザーが
  • にログインしている場合

    1. すなわち、以下のさまざまな状況をテストしたいですユーザーがログインしている場合、ユーザーが匿名の場合、電子メール

    すなわち、1のための

    、我々は、異なる値、2のための を持っています我々は別の異なる値を持っています 3の場合、ユーザーが匿名ですが、電子メールを提供する場合、私たちは別の異なる値を持っています

    今djangoユニットテストで、より良い便利なため

    、私は、Djangoのユニットテストでは状況のこのタイプを確認する方法**

    def test_requirement_header_create_api(self, mocked_get_or_save_anonymous_user_email): 
        mocked_get_or_save_anonymous_user_email.return_value = dict() 
        client = APIClient(enforce_csrf_checks=True) 
        logged_in = client.login(username=self.user.email, password=self.user.password) 
    
        if logged_in: 
         self.data = { 
          "user_id": self.user_id, 
          "description": self.description, 
         } 
         expected_return = { 
          "user_id": self.user_id, 
          "description": self.description, 
         } 
        elif self.anonymous_user: 
         self.data = { 
          "email": self.anonymous_user.email, 
          "anonymous_user_email_id": self.anonymous_user.id, 
          "description": self.description, 
         } 
         expected_return = { 
          "id": 2, 
          "status": self.requirement_status, 
          "description": self.description, 
         } 
        else: 
         self.data = { 
          "description": self.description, 
          "session": self.session, 
         } 
         expected_return = { 
          "description": self.description, 
          "session": self.session, 
         } 
        response = client.post('/api/requirement-header/', self.data, format='json') 
        self.assertDictEqual(response.data, expected_return) 
    

    は、私はちょうど知りたい(実際には完璧に動作していないもの)、私が実際に試してみました何を共有しています すなわち

    if user is logged in then test something..... 
    elif user is anonymous then test some another thing..... 
    

    実際には、私が知っている必要がありますがhow to check my above written situations、私はあなたが私はACTUを持っているか知っているように私のコードを共有しているということです、私の共有コードについては気にしないでくださいこれらの状況を確認するためにこれまで試みていたのですが、これは正しい方法ではありませんが、申し訳ありませんが、正しい方法を見つけることができません。実際これはdjanoでのAPIテストの不足です私は初めての書き込みです。匿名ユーザーを確認するために

  • +0

    許しmあなたのコードは不必要に複雑です。また、読者はself.user_idや他の変数がどこにあるのか分からないので、コメントすることはかなり難しいです。 – e4c5

    +0

    実際には、コードについて気にしないでください。私が知る必要があるのは、上記の書面による状況をチェックする方法です。私は自分のコードを共有しています。これは正しい方法ではないことは確かですが、申し訳ありませんが、私は正しい方法を見つけることができません。これはdjanoでのAPIテストの作成が不十分であることです。実際は初めての書き込みです。 – RTan

    答えて

    2

    は、ユーザーにログインし、あなたが使用できるかどうかを確認するには(the docsに見られるように)

    self.user.is_anonymous() 
    

    を使用することができます(再び、taken from the docs

    self.user.is_authenticated() 
    

    言われていること単体テストで単体テストを行い、1つの単体テストのみでテストしてください。単体テストでこれらの異なるケースをテストするのは反パターンです。

    関連する問題