Страницы

Поиск по вопросам

воскресенье, 26 января 2020 г.

Запуск тест-сьютов юнит-тестов в PyCharm

#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 и скрипты тестов выполняются.

Комментариев нет:

Отправить комментарий