У меня есть тестовый проект Django под названием MyApp, работающий через WSGI на порту 8083. Когда я перехожу на http://myapp:8083
, я вижу стандартную страницу Django "это работает". Я написал функциональный тест, используя привязки селена в Django, чтобы запустить браузер и загрузить вышеупомянутую страницу. Однако, когда я запускаю тест, я получаю сообщение об ошибке «Адрес уже используется». Поэтому я запускаю тест, используя другой порт, например: python manage.py test --liveserver=myapp:8084
Это открывает браузер, но показывает ошибку «Страница не найдена» вместо страницы Django по умолчанию. Что я делаю неправильно? Любые идеи? Спасибо!
Содержимое файла test.py:
class CoreSeleniumTestCase(LiveServerTestCase):
@classmethod
def setUpClass(cls):
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
super(CoreSeleniumTestCase, cls).setUpClass()
@classmethod
def tearDownClass(cls):
cls.driver.quit()
super(CoreSeleniumTestCase, cls).tearDownClass()
def testIndexShouldLoad(self):
self.driver.get('%s%s' % (self.live_server_url, '/'))
1 ответ
Я наконец нашел проблему. В какой-то момент Django по умолчанию удалил MEDIA_ROOT из файла settings.py. Оказывается, этот параметр должен быть в файле, чтобы тесты Selenium работали правильно. Как только я повторно ввел этот параметр и назначил ему каталог, тесты Selenium начали работать, как ожидалось.
Похожие вопросы
Новые вопросы
django
Django - это серверная платформа веб-приложений с открытым исходным кодом, написанная на Python. Он разработан для сокращения усилий, необходимых для создания сложных веб-сайтов и веб-приложений, управляемых данными, с особым упором на меньшее количество кода, отсутствие избыточности и более явное, чем неявное.
self.live_server_url
перед получением страницы в методеtestIndexShouldLoad
. Какая ценность?http://myapp:8084
. Когда я выполняю тесты с использованиемpython manage.py test
(без указания настраиваемого порта живого сервера), он пытается открытьhttp://myapp:8083
и выдает ошибку «Адрес уже используется».