Юнит-тест Satchmo выполняется только в изоляции - PullRequest
0 голосов
/ 13 января 2012

Я работаю над проектом Django, используя программное обеспечение корзины для покупок Satchmo.Я должен использовать довольно сложный пользовательский код для этого проекта, поэтому хотел бы, чтобы все тесты Django и Satchmo проходили.

Однако один из тестов работает только изолированно, а точнее custom.ShopTest.test_custom_product in product/modules/custom/tests.py.Этот тест работает изолированно (т.е. с ./manage.py test custom.ShopTest), но не тогда, когда я запускаю все тесты вместе (./manage.py test).

Этот тест открывает домашнюю страницу с помощью тестового клиента Django и проверяет, содержатся ли некоторые тексты.на странице.Когда я загружаю тот же прибор в производственную базу данных, эти тексты также появляются на странице.

Кроме того, при запуске теста продукт, название которого должно отображаться на странице, также существует в тестовой базе данных.Таким образом, прибор загружен правильно.

Я думаю, что некоторые другие приложения Satchmo каким-то образом прерывают тестирование, но я всегда предполагал, что Django выполняет тесты как можно чаще в изоляции.

РЕДАКТИРОВАТЬ:

Результат неудачного теста:

======================================================================
FAIL: test_custom_product (product.modules.custom.tests.ShopTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/data/Projects/satchmo/satchmo/apps/product/modules/custom/tests.py", line 43, in test_custom_product
    self.assertContains(response, "Computer", count=1)
  File "/data/PythonEnvironments/mywebsite.nl/local/lib/python2.7/site-packages/django/test/testcases.py", line 427, in assertContains
    " (expected %d)" % (real_count, text, count))
AssertionError: Found 0 instances of 'Computer' in response (expected 1)

----------------------------------------------------------------------

РЕДАКТИРОВАТЬ 2: Я только что обнаружил, что тест не всегда происходит, когда я ставлю точку останова в запрошенной функции просмотра и ждунекоторое время, прежде чем продолжить, когда отладчик останавливается в точке останова.Может быть, это как-то связано с потоками?

Ответы [ 2 ]

1 голос
/ 18 апреля 2012

ИСПРАВЛЕНО в Satchmo : Поддержка простого сброса настроек в реальном времени была добавлена ​​в мае 2011 года в настройки в реальном времени. В настоящее время я не нашел ни одного неудачного теста с последними пакетами. Тестовый класс ShopClass не изменяется в течение длительного времени.

0 голосов
/ 16 января 2012

Я наконец нашел решение сам. Это было связано с кэшированием. Использование фиктивного кэша действительно решило эту конкретную проблему, но тогда другой модульный тест не удался (testCacheGetOK из keyedcache). Однако установка времени ожидания кеша на одну секунду во время тестирования решила проблему.

...