Как запустить тестовый набор Django несколько раз? - PullRequest
2 голосов
/ 29 марта 2012

Я хочу провести исчерпывающее тестирование на одном из моих тестовых случаев (скажем, создать документ, чтобы отладить некоторые странные вещи, с которыми я сталкиваюсь ..)

Моей жестокой силой было запустить python manage.py test myapp в цикле, используя Popen или os.system, но теперь я вернулся к чистому пути? .....

def SimpleTest(unittest.TestCase):
   def setUp(self):

   def test_01(self):

   def tearDown(self):

def suite():
   suite = unittest.TestCase()
   suite.add(SimpleTest("setUp"))
   suite.add(SimpleTest("test_01"))
   suite.add(SimpleTest("tearDown"))
   return suite

def main():
   for i in range(n):
     suite().run("runTest")

Я побежал python manage.py test myapp, и я получил

  File "/var/lib/system-webclient/webclient/apps/myapps/tests.py", line 46, in suite
    suite = unittest.TestCase()
  File "/usr/lib/python2.6/unittest.py", line 216, in __init__
    (self.__class__, methodName)
ValueError: no such test method in <class 'unittest.TestCase'>: runTest

Я погуглил ошибку, но все равно ничего не понял (мне сказали добавить пустой метод runTest, но это звучит неправильно ...)

Ну, в соответствии с питоном unittest.TestCase:

Простейший подкласс TestCase просто переопределит runTest () метод для выполнения конкретного кода тестирования

Как видите, моя цель - запустить SimpleTest N раз. Мне нужно следить за проходом, провалом против N.

Какой вариант у меня есть?

Спасибо.

1 Ответ

0 голосов
/ 29 марта 2012

Отслеживать условия гонки с помощью юнит-тестов сложно.Иногда лучше использовать интерфейс автоматизированного тестирования, такой как Selenium, - в отличие от модульного тестирования, среда одинакова, и нет необходимости в дополнительной работе для обеспечения параллелизма.Вот один из способов запустить параллельный код в тестах, когда нет лучшего варианта: http://www.caktusgroup.com/blog/2009/05/26/testing-django-views-for-concurrency-issues/

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

...