Почему pycharm не распознает мои тесты pytest и показывает результат теста? - PullRequest
0 голосов
/ 29 января 2019

Я новичок в pytest и пытаюсь написать тестовые модули для моего приложения.Моя структура каталогов:

broker/
broker/tests
broker/tests/conftest.py
broker/tests/test_db.py
broker/db.py

Я хочу протестировать модуль db.py.

Я настраиваю pycharm для использования pytest в качестве моего бегуна.Когда я запускаю test_db.py в pycharm, я получаю:

/Users/cbogdon/virtualenv/platinum-onboard/bin/python /Users/cbogdon/coding/platinum-onboard/broker/tests/test_db.py

Process finished with exit code 0

Это похоже на то, что pycharm не выполняет pytest.Даже если я щелкну правой кнопкой мыши зеленую стрелку слева от одной из моих функций тестирования, появится меню, показывающее, что я могу нажать: «Выполнить» pytest для test_db.py::TestDBFunctions::test_valid_db'"

ЕслиЯ запускаю его в командной строке, используя:

python -m pytest --setup-show tests/test_db.py 

Я получаю соответствующий тестовый вывод.

 python -m pytest --setup-show tests/test_db.py 
========================================================== test session starts ===========================================================
platform darwin -- Python 3.6.1, pytest-4.1.1, py-1.7.0, pluggy-0.8.1
rootdir: /Users/cbogdon/coding/platinum-onboard/broker, inifile:
collected 4 items                                                                                                                        

tests/test_db.py 
        tests/test_db.py::TestDBFunctions::test_uuid.
        tests/test_db.py::TestDBFunctions::test_invalid_dbF
        tests/test_db.py::TestDBFunctions::test_valid_db.
        tests/test_db.py::TestDBFunctions::test_already_created_database.

================================================================ FAILURES ================================================================
____________________________________________________ TestDBFunctions.test_invalid_db _____________________________________________________

self = <test_db.TestDBFunctions object at 0x102606438>

    def test_invalid_db(self):
>       ret = db.initialize_database()
E       TypeError: initialize_database() missing 1 required positional argument: 'dbname'

tests/test_db.py:14: TypeError
=================================================== 1 failed, 3 passed in 0.08 seconds ==================================================

Есть ли что-то особенное, что мне нужно сделать в PyCharm?

Извините за вопрос новичка, но я просто не могу понять это!

Ответы [ 2 ]

0 голосов
/ 30 января 2019

Я нашел ответ: мне нужно было:

В окне «Run / Debug Configurations» нажмите кнопку «+» в левом верхнем углу.Зайдите в тесты Python и выберите py.test.Нажмите кнопку ОК.

На левой панели вы можете увидеть, как создаются тесты Python.На правой панели для текстового поля Имя укажите значение py.test в module_name.py. Всегда следует добавлять префикс имени файла теста Python к словам py.test in.

Для текстового поля Target укажитепуть к тестовому файлу Python.

В текстовом поле «Рабочий каталог» укажите путь к каталогу, содержащему тестовые файлы Python.

Нажмите кнопку «ОК».

Длячто бы это ни работало и теперь это работает!

0 голосов
/ 29 января 2019

Пожалуйста, убедитесь, что для Settings > Tools > Python Integrated Tools > Default test runner установлено значение pytest, очистите кэш и перезапустите pycharm (особенно если этот параметр был изменен в прошлом)

...