2017-02-14 2 views
2

У меня проблема с запуском наборов тестов. Я использую pytest для светильников и тестового заказа и unittests для запуска наборов. Все тестовые классы имеют параметр (unittest.TestCase)Python pytest unittest.TextTestRunner не запускает определенные пакеты

Файл, который я запускаю из того же каталога (папки/пакета), где находятся тесты. Я выполняю TestSuite с командой, pytest tests/test_suit.py. Вот test_suit.py:

import unittest 
from unittest import TextTestRunner 
from unittest import TestLoader 

from tests.home_page.login_test import LoginTest 
from tests.cloud.cloud_test import CloudTest 

tc1 = unittest.TestLoader().loadTestsFromTestCase(CloudTest) 
tc2 = unittest.TestLoader().loadTestsFromTestCase(LoginTest) 

smokeTest = unittest.TestSuite([tc1]) 

unittest.TextTestRunner(verbosity=2).run(smokeTest) 

Проблема заключается в том, что выполняет все TestCases, даже если я ставлю только один. Похоже, он собирает все классы, где у меня есть аргумент (unittest.TestCase) и не подбирает правильный TestSuite.

Не имеет значения, если я делаю smokeTest = unittest.TestSuite([tc1]) или smokeTest = unittest.TestSuite([tc2, tc1]), он по-прежнему запускает все тестовые примеры.

+0

Почему вы это делаете? Весь смысл использования таких инструментов, как py.test и нос, позволяет * их * собирать и запускать тесты. Вы должны * не * обязательно определять «TestSuite» вообще. Если вы хотите только запустить «LoginTest», вы можете указать это в командной строке или использовать декораторы для пропуска других тестов. – Bakuriu

+0

Ну, у меня есть куча тестов, таких как дым, функциональность, регрессия, и у всех есть свои наборы тестов. – olia

+0

Итак? Если вы хотите запустить тесты дыма, используйте 'pytest tests/test_smoke.py' или' pytest tests/smoke_tests', если это каталог. Если вы правильно группируете свои тесты в файлах/каталогах, вам не нужно ничего делать, чтобы собирать тесты для запуска, вы просто указываете каталог/файл. – Bakuriu

ответ

0

Вот мой не-ответ. Проверив pytest documentation и нашел пункты, как (курсив),

Обратите внимание, что это означает, как предварительного способ запуска тестового кода , пока полностью не конвертировать в pytest стиль тестов. Чтобы полностью воспользоваться преимуществами приборов, параметризаций и крючков, вы должны преобразовать (инструменты, такие как unittest2pytest полезны). Кроме того, не все сторонние плагины - , как ожидается, будут работать лучше всего с помощью тестов стиля unittest.TestCase.

У вас есть разумное ожидание, что вы сможете позвонить в pytest на тест-драйв в стиле unittest?

. Посмотрите на pytest's own test for unittest compatibility и их unittest.py module, я не вижу поддержки или проверки тестовых объектов типа Unittest, которые зависят от вашего test_suite.py и которые составляют основу для этого вопроса. Я вижу только поддержку тех, которые они документируют, которые они поддерживают, unittest.TestCase.

pytest делает неправильно вещь

so zyoung$ pytest tests/test_suit.py 
============================= test session starts ============================== 
platform darwin -- Python 2.7.13, pytest-3.0.6, py-1.4.32, pluggy-0.4.0 
rootdir: /Users/zyoung/so, inifile: 
collected 2 items 

tests/test_suit.py .. 

=========================== 2 passed in 0.02 seconds =========================== 

питон/UnitTest делает правильно вещь

so zyoung$ python tests/test_suit.py 
test (cloud.cloud_test.CloudTest) ... ok 

---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 
Смежные вопросы