私はDjango 1.4のLiveServerTestCaseをSeleniumテストに使用しており、setUpClass
クラスメソッドに問題があります。私が理解する限り、ユニットテストを実行する前にMembershipTests.setUpClass
が一度実行されます。Django LiveServerTestCase:setUpClassメソッドで作成されたユーザーは、test_methodでは使用できません。
MembershipTests.setUpClass
にデータベースを追加するコードを入れましたが、MembershipTests.test_signup
テストを実行すると、テストデータベースにユーザーが追加されていません。 私は間違って何をしていますか?私がsetUpClass
で作成したユーザーは、すべての単体テストで利用できると思います。
私はMembershipTests.setUp
でユーザー作成コードを入れてMembershipTests.test_signup
を実行した場合、私は、ユーザーが見ることができますが、setUp
があるとして、すべてのユニットテストの前に、この実行を望んでいません。ご覧のとおり、カスタムLiveServerTestCaseクラスを使用して、すべてのテスト(test_utils.CustomLiveTestCase
)に基本的な機能を追加します。私はこれが私の問題と関係があると思う。
ありがとうございます。
test_utils.py:
from selenium.webdriver.firefox.webdriver import WebDriver
from django.test import LiveServerTestCase
class CustomLiveTestCase(LiveServerTestCase):
@classmethod
def setUpClass(cls):
cls.wd = WebDriver()
super(CustomLiveTestCase, cls).setUpClass()
@classmethod
def tearDownClass(cls):
cls.wd.quit()
super(CustomLiveTestCase, cls).tearDownClass()
tests.py:
from django.contrib.auth.models import User
from django.test.utils import override_settings
from test_utils import CustomLiveTestCase
from test_constants import *
@override_settings(STRIPE_SECRET_KEY='xxx', STRIPE_PUBLISHABLE_KEY='xxx')
class MembershipTests(CustomLiveTestCase):
fixtures = [
'account_extras/fixtures/test_socialapp_data.json',
'membership/fixtures/basic/plan.json',
]
def setUp(self):
pass
@classmethod
def setUpClass(cls):
super(MembershipTests, cls).setUpClass()
user = User.objects.create_user(
TEST_USER_USERNAME,
TEST_USER_EMAIL,
TEST_USER_PASSWORD
)
def test_signup(self):
print "users: ", User.objects.all()
LiveServerTestCaseを使用してユーザーを作成してログインするにはどうすればよいですか? SQLiteデータベースでsetUpにアカウントを作成するには:memory:手動でコミットしても機能しません。 – dotz