У меня есть тестовый проект 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, '/'))
2
pkout 14 Авг 2014 в 03:19
Распечатайте значение self.live_server_url перед получением страницы в методе testIndexShouldLoad. Какая ценность?
 – 
alecxe
14 Авг 2014 в 06:03
Я распечатал его, и значение равно http://myapp:8084. Когда я выполняю тесты с использованием python manage.py test (без указания настраиваемого порта живого сервера), он пытается открыть http://myapp:8083 и выдает ошибку «Адрес уже используется».
 – 
pkout
14 Авг 2014 в 16:05

1 ответ

Лучший ответ

Я наконец нашел проблему. В какой-то момент Django по умолчанию удалил MEDIA_ROOT из файла settings.py. Оказывается, этот параметр должен быть в файле, чтобы тесты Selenium работали правильно. Как только я повторно ввел этот параметр и назначил ему каталог, тесты Selenium начали работать, как ожидалось.

1
pkout 30 Авг 2014 в 06:59