#python #selenium #pycharm #юнит_тесты
Есть следующий файл: SomeTest1.py __author__ = 'vbilohorodskyi' import unittest from selenium import webdriver from selenium.webdriver.common import keys class InitDriverTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() print("=========================================================") #initializing browser and verifying if the selected URL is accessible and has correct content by key values def testInit_driver_and_url(self): driver = self.driver driver.get("somesite.com") assert "Some title" in driver.title print("Init driver and url: PASS") def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main() И есть второй файл с такой же архитектурой, но другим тест-кейсом. Оба этих файла находятся в одном Python Package, и отдельно запускаются без проблем. Как только пытаюсь запустить все тесты с пекеджа, наблюдаю ошибку Process finished with exit code 0 Empty test suite. файл init.py для данного пекеджа пустой. Пробовал менять конфигурацию Runner'а, игрался с названиями классов и методов(test- вначале и -Test в конце), пробовал разные Regexp'ы в качестве паттерна в конфигурации Runner'а, но ничего не помогло. Кто-нибудь сталкивался с этой проблемой? Буду признателен за помощь в настройке запуска тест-сьютов из пекеджа.
Ответы
Ответ 1
У меня успешно работает такая конфигурация тестов: Настройки: "All in folder", указана папка (не пакет) с тестами: tests. Никаких шаблонов не указано. Рабочая папка — папка всего проекта. Вот как выглядит папка с тестами: Все файлы имеют префикс test_, все классы унаследованы от unittest.TestCase и имеют префикс Test. Версия PyCharm Community Edition 5.0.3. Кроме этого, у вас в примере с табуляциями беда. if __name__ == "__main__": не должен иметь табуляции впереди.Ответ 2
Путём пары попыток выяснилось, что для обработки всех тестов в каталоге есть 2 варианта: все имена файлов с тестами начинать с test_ ни одного имени файла не начинать с test_, а в конфигурации в качестве паттерна указать *.py __init__.py не нужен, т.к. вряд ли будем импортировать.Ответ 3
Все тесты запустятся, если следовать правилу - файлы с тестами должны содержать в имени строку «test_», имена классов — начинаться с «Test», а методов — со строки «test_».Ответ 4
Содержание выделенного __init__.py (не выделенный __init__.py - пустой): __all__ = ['ex01', 'ex02'] Содержание ex01.py: import unittest class TestCase01(unittest.TestCase): def test_003(self): self.assertEqual(True, True) Содержание ex02.py: import unittest class TestCase02(unittest.TestCase): def test_001(self): self.assertEqual(True, True) Содержание run_test_package.py: import unittest from tests_package.ex01 import * from tests_package.ex02 import * if __name__ == '__main__': unittest.main() Запускаем run_test_package.py и скрипты тестов выполняются.
Комментариев нет:
Отправить комментарий