組み込みのログイン機能を使用して、テスト クライアントにログインしようとしています。ビューを単体テストしようとしていますが、それらのいくつかをテストするにはログインする必要があります。私はあまりにも長い間これをやろうとしてきましたが、助けが必要です. いくつかのメモ:
create_user() は有効なユーザーを作成しますが、他の場所で使用されています。
client.login() について見たところ、ブール値が返されます。テストを実行すると、失敗は「False is not True」だったので、これは正しいようです。
私が正常にログインした唯一の方法は、 client.post("/my/login/url", {username and password in dict.}) を呼び出すことですが、何らかの理由で、すべてのテストケースでログインしたままになるわけではありません私は非常に奇妙だと思います。
def setUp(self):
"""
Initializes the test client and logs it in.
"""
self.user = create_user()
self.logged_in = self.client.login(username=self.user.username, password=self.user.password)
def test_valid(self):
self.assertTrue(self.logged_in)
私はそれを次のように変更しました:
def setUp(self):
"""
Initializes the test client and logs it in.
"""
self.password = "password"
self.user = create_user(password=self.password)
self.logged_in = self.client.login(username=self.user.username, password=self.password)
それでもログインに失敗します。
create user はクラス "Static" にあり、user_count が 0 に初期化されている場合、関数は次のようになります。
def create_user(username=None, password=None, email=None, is_superuser=False):
if username is None:
username = "user%d" % Static.user_count
while User.objects.filter(username=username).count() != 0:
Static.user_count += 1
username = "user%d" % Static.user_count
if password is None:
password = "password"
if email is None:
email="user%d@test.com" % Static.user_count
Static.user_count += 1
user = User.objects.create(username=username, password=password, is_superuser=is_superuser)