Я использую Django 1.4 LiveServerTestCase для тестирования Selenium, и у меня возникают проблемы с методом класса setUpClass
. Насколько я понимаю, MembershipTests.setUpClass
запускается один раз перед запуском модульных тестов.
Я добавил код для добавления пользователя в базу данных в MembershipTests.setUpClass
, но когда я запускаю тест MembershipTests.test_signup
, в базу данных тестов не добавлен пользователь. Что я делаю неправильно? Я ожидаю, что пользователь, созданный мной в setUpClass
, будет доступен во всех модульных тестах.
Если я поместил код создания пользователя в MembershipTests.setUp
и запустил MembershipTests.test_signup
, я могу видеть пользователя, но не хочу, чтобы этот запуск выполнялся до каждых unit test как 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()