Я настраиваю функциональное тестирование с использованием Selenium для сайта Django. У меня есть файл fixture (users/fixtures/users.json
), и я использую его в функциональных тестах в другом приложении (accounts
). При запуске тестов я также запускаю свой сервер разработки для приема запросов от автоматизации браузера Selenium; Я запускаю ./manage.py test
и ./manage.py runserver
в том же самом модуле настроек, чтобы у обоих были учетные данные для одной и той же базы данных.Тесты Django с селеном, не загружающим светильники
Мои accounts
тесты не удается загрузить users
приспособление:
from django.test import TestCase
class AccountCreationTestCase(TestCase):
fixtures = ['users']
# Tests depending on user login follow.
# These tests are run via Selenium for browser automation.
Эти тесты успеха, когда я вручную загрузить светильники в тестовую базу данных с помощью командной строки, но они не иначе, так что я знаю, что они используя данные прибора, когда он присутствует в базе данных, и я также знаю, что они не загружают тестовые приборы.
Напомним: я запускаю ./manage.py test
и ./manage.py runserver
в том же модуле настроек, который определяет учетные данные доступа к тестовой базе данных. Если светильники загружаются в тестовую базу данных, эти данные должны быть доступны для тестов, когда они запускаются через Selenium.
Что мне не хватает?
Редактировать 1: В контексте я использую Django 1.8. Кроме того, я использую Selenium для автоматизации PhantomJS, чтобы тесты могли работать быстрее.
Редактировать 2: Я только что сделал более подробное чтение документов Django и нашел два вопроса, с которыми сталкиваюсь.
Первый выпуск: Джанго тесты automatically prefix имя базы данных с test_
, так что вы должны убедиться, что ваш тестовый сервер и тесты Django используют ту же базу данных по имени, например, так:
DATABASES = {
'NAME': "test_db_name",
'TEST': {
'NAME': "test_db_name"
}
}
Второй вопрос : Django docs объясняют, что Django разрушает тестовые базы данных между тестовыми запусками. Это приведет к сбою сервера разработки, поскольку для этого требуется наличие базы данных. Django 1.8 представила опцию --keepdb
для тестового бегуна, которая будет поддерживать экземпляр базы данных между тестами. Хотя этот флаг позволяет серверу работать в тестовой базе данных, я все равно не могу заставить приборы загружаться в эту базу данных. Это может быть вызвано использованием нового флага, который существенно изменяет поведение тестов с точки зрения загрузки тестовой базы данных.
Похоже, что это может сработать (соединение с базой данных в памяти может сохраняться, даже если сама база данных разрушена и создана между каждым тестовым прогоном). Я попробую это и посмотрю, не могу ли я использовать свой прецедент для работы. – Adam