6

ホーム ビューの基本的なテストを実行しています。シェルからのクライアントのログインは機能しますが、テスト スイートを使用すると、同じコード行でクライアントのログインに失敗します。

Django テスト スイートを使用しているときにクライアントにログインする正しい方法は何ですか?

または

クライアントが現在の方法でログインしていない理由は何ですか?

シェルテスト:

import unittest
from django.test.client import Client
from django.test.utils import setup_test_environment
setup_test_environment()

client = Client()
login = client.login(username='agconti', password='password')

# login --> evals to True

Django テスト スイート:

#### View Tests ####
import unittest
from django.test.client import Client
from shopping_cart.models import Store, Order, Item, Transaction

class Home_ViewTest(unittest.TestCase):
    def setUp(self):
        self.client = Client()
        # login user
        login = self.client.login(username='agconti', password='password')
        # Check login
        self.assertEqual(login, True)

    def test_details(self):
        # get the home view
        response = self.client.get('/')      
        self.assertEqual(response.status_code, 200)

        # Check that the rendered context is not none 
        self.assertTrue(response.context['stores'] != None)

# self.assertEqual(login, True) --> login evals to False, raises the assertion
4

1 に答える 1

23

テスト ユーザーを作成する必要があります。何かのようなもの:

  def setUp(self):
    self.client = Client()
    self.username = 'agconti'
    self.email = 'test@test.com'
    self.password = 'test'        
    self.test_user = User.objects.create_user(self.username, self.email, self.password)
    login = self.client.login(username=self.username, password=self.password)
    self.assertEqual(login, True)

シェルテストでは、ユーザーはおそらくすでにデータベースに存在していますが、単体テストではユーザーが存在しない可能性があります...

于 2013-09-02T17:38:01.930 に答える