#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 и скрипты тестов выполняются.
Комментариев нет:
Отправить комментарий