2

Django サイトのフォームのテストを書いています。ログインしたユーザーが正しい入力を想定してフォームを使用できることをテストしたいと思います。そのために、Django リクエスト ファクトリを使用しています。ただし、テストユーザーをログインさせることができないようです。それ、または私は要求を正しく行っていません。わからない。以下の関連コード:

def create_user():
        username = 'User '+id_generator()
        return User.objects.create(username = username, password = 'password')

def test_can_register_deck(self):
        t = create_empty_tourney()
        u = create_user()
        d = create_deck(u)
        rf = RequestFactory()
        request = rf.post(reverse('tourney:tourney', args=(t.slug,)),{'deck' : d})
        request.user = u
        response = self.client.get(reverse('tourney:tourney', args=(t.slug,)), request)
        self.assertEqual(response.status_code, 200)

リクエストは、ユーザーがログインしていると見なす必要があります。そうしないと、残りのテストが機能しません。これはエラーをスローしませんがresponse、リクエストを正しく利用しているかどうかさえわかりません。「このユーザーとしてトーナメント ページに投稿リクエストを送信し、デッキを送信してみてください」とテストに正しく伝えていますか?

4

1 に答える 1

1

RequestFactoryとクライアントは、django ビューをテストする 2 つの異なる方法だと思います。

requestから返されるはrf.post、ビュー関数に直接渡されることを意図しています。そうすれば、ユーザーがログインしていると検出されることがわかると思います。

ソースとドキュメントを見ましたが、テスト クライアントがリクエストを受け入れる場所がわかりません。以下を使用して、テスト クライアントでユーザーをログインできます。

self.client.login(
   username=u.username,
   password='password')
于 2015-01-28T20:42:48.983 に答える