Функциональный тест Django: selenium ‘live_server_url’ не загружает статические файлы

#django #selenium #django-testing #django-pipeline

#django #селен #django-тестирование #django-конвейер

Вопрос:

Я использую django-pipeline для загрузки статических файлов.

Странно то, что StaticLiveServerTestCase live_server_url он не может правильно загружать статические файлы.

Вот часть кода:

 class ProductSetupTestCase(TestCase):

    @classmethod
    def setUpClass(cls):
        super(ProductSetupTestCase, cls).setUpClass()
        # place category
        cls.place_category = PlaceCategory.objects.create(name="학교")

        # subject category
        cls.subject_category1 = SubjectCategory.objects.create(name="사람")
        cls.subject_category2 = SubjectCategory.objects.create(name="꽃병")

        for i in range(5):
            name = 'name'   str(i)
            product = Product.objects.create(
                name=name,
                place_category=cls.place_category,
            )

            product.subject_category_set.add(cls.subject_category1)
            product.subject_category_set.add(cls.subject_category2)

            product.variation_set.create(color='black')
            product.variation_set.create(color='single')
            product.variation_set.create(color='multi')


class CartItemEditTest(ProductSetupTestCase, StaticLiveServerTestCase):

    def setUp(self):
        self.browser = webdriver.Firefox()
        self.browser.implicitly_wait(2)
  

Firefox появляется браузер, и я выполняю следующую команду:

self.browser.get(self.live_server_url) # self.live_server_url value is localhost:8081

И когда я проверяю js файл с помощью инструмента разработки, он показывает следующее:

 <script type="text/javascript" src="/static/js/message.8d038600d898.js" charset="utf-8"></script>
  

Когда я копирую src ( http://localhost:8081/static/js/message.8d038600d898.js ) и вставляю его в новую вкладку, он не отображается Not Found .

Теперь я использовал другой URL, http:localhost:8000 , который django runserver url .

self.browser.get( http://localhost:8000 `)

Когда я проверяю это время, статические файлы загружаются довольно хорошо:

<script type="text/javascript" src="/static/js/message.js" charset="utf-8"></script>

Почему это происходит? Должен ли я live_server_url больше не использовать?

Комментарии:

1. Я не использовал django-pipeline, но только что обнаружил, что браузеры selenium также выполняют кэширование (конечно), может ли это быть так?

2. @Danimal Нет, я сталкиваюсь с той же проблемой, и, установив длительный тайм-аут ожидания Selenium, я могу открыть инспектор DOM и покопаться. Он пытается выполнить запрос, но выдает ошибку 404.