it-swarm.com.ru

Как настроить PyCharm для запуска тестов py.test?

Я хочу начать писать модульные тесты для моего кода Python, и py.test framework звучит лучше, чем пакет Python unittest . Поэтому я добавил каталог «tests» в свой проект и добавил test_sample.py к нему. Теперь я хочу настроить PyCharm для запуска всех тестов в моем каталоге «tests».

Якобы PyCharm поддерживает py.test в своем тестере. Предполагается, что вы сможете создать конфигурацию run/debug для запуска ваших тестов, и PyCharm предположительно имеет диалоговое окно "создать конфигурацию" специально для py.test . Но это полный объем их документации по этому вопросу, и я нигде не могу найти это предполагаемое диалоговое окно.

Если я щелкну правой кнопкой мыши по каталогу в окне инструмента Project, я предполагается , чтобы увидеть пункт меню «Создать <имя>», но единственный пункт меню, начинающийся с «Создать» - это «Создать конфигурацию выполнения». Хорошо, может быть, документация просто неверна, и «Создать конфигурацию запуска» звучит многообещающе. К сожалению, в этом подменю есть только два элемента: «Юнит-тесты в C:\mypath ...» и «Док-тесты в C:\mypath ...», ни один из которых не применим - я не использую ни unittest, ни doctest. Нет пункта меню для py.test.

Если я открою свой test_sample.py и щелкну правой кнопкой мыши в окне редактора, я получу обещанные пункты меню «Создать <имя>»: есть «Создать» Unittests in test_sa ...'... », а затем« Выполнить 'Юнит-тесты в test_sa ...' 'и' Отладка 'Юнит-тесты в test_sa ...' ". Итак, еще раз, все это специфично для фреймворка unittest; ничего для py.test.

Если я попробую пункты меню с надписью «unittest», я получу диалоговое окно с опциями «Имя», «Тип», групповое поле «Тесты» с «Папка» и «Шаблон», «Сценарий» и «Класс». "и" Функция "и т. д. Это звучит в точности как то, что задокументировано как диалог для добавления конфигурации для Python Unit Test , а не как параметры" Имя "и" Тест для запуска "и" Ключевые слова ", которые должен отображаться в конфигурации для диалога py.test . Там нет ничего внутри диалога, чтобы переключиться, какой тестовый каркас я добавляю.

Я использую PyCharm 1.5.2 на Windows с Python 3.1.3 и pytest 2.0.3. Я могу успешно запустить py.test в своих тестах из командной строки, так что это не что-то простое, как, например, pytest не устанавливается должным образом.

Как настроить PyCharm для запуска моих тестов py.test?

124
Joe White

Пожалуйста, перейдите в файл | Настройки | Инструменты | Интегрированные инструменты Python и измените запуска теста по умолчанию на py.test. Тогда вы получите опцию py.test для создания тестов, а не unittest.

198
yole

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools - выберите py.test в качестве Default test runner.
  2. Если вы используете Django Preference -> Languages&Frameworks -> Django - поставьте галочку на Do not use Django Test runner
  3. Удалите все предыдущие выполненные тесты из Run/Debug configuration, в противном случае тесты будут выполняться с этими конфигурациями. 
  4. Чтобы установить некоторые дополнительные аргументы по умолчанию, обновите конфигурацию по умолчанию для py.test. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
25
Sergey Kubrak

Я думаю, что вам нужно использовать пункт Run/Debug Configuration на панели инструментов. Нажмите на него и «Редактировать конфигурации» (или используйте пункт меню «Пуск» -> «Редактировать конфигурации»). В разделе «По умолчанию» на левой панели есть пункт «py.test», который, я думаю, вам нужен.

Я также обнаружил, что руководство не соответствует интерфейсу пользователя для этого. Надеюсь, я правильно понял проблему, и это помогает.

16
Scott Griffiths

Это плохо документировано, чтобы быть уверенным. Как только вы добавите новую конфигурацию из настроек по умолчанию, вы сможете запустить скрипт «/ Applications/PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py». Это не задокументировано и имеет свои идеи аргументов командной строки.

Вы можете:

  1. Попробуйте поиграть, поверните сценарий вспять и посмотрите, сможете ли вы как-нибудь заставить py.test принимать аргументы. Это может сработать; это было не в первые полчаса для меня.
  2. Просто запустите «py.test * .py» из консоли.

Как ни странно, вам будет трудно найти какую-либо дискуссию, поскольку JetBrains хорошо справляется с бомбардировкой алгоритмов Google своими собственными страницами.

5
Charles Merriam

Вот как я заставил его работать с pytest 3.7.2 (установленным через pip) и pycharms 2017.3:

  1. Перейти к edit configurations

  1. Добавьте новую конфигурацию запуска и выберите py.test

  1. В сведениях о конфигурации запуска необходимо установить target = python и поле без имени ниже как tests. Похоже, это имя вашей тестовой папки. Не слишком уверенно. Я также рекомендую аргумент -s, чтобы при отладке тестов консоль работала правильно. Без аргумента pytest фиксирует вывод и делает глючную консоль отладки.

  1. Моя папка тестов выглядит так. Это чуть ниже корня моего проекта (my_project/tests).

  1. Мой файл foobar_test.py: (импорт не требуется):
 def test_foobar (): 
 print ("привет, pytest") 
 утверждать, правда 
  1. Запустите его с помощью обычной команды запуска

3
Benjamin Crouzier

найти эту ветку, когда я нажму на тот же вопрос и найду решение pycharm версия: 2017.1.2 перейдите в «Предпочтения» -> «Инструменты» -> «Python Integrated Tools» и установите справа запускающий тест по умолчанию боковая панель как py.test решить мою проблему

3
jacobcan118

Я использую 2018.2

Я делаю Run -> Edit Configurations ... Затем нажимаю + в левом верхнем углу модального диалога . Выберите «python tests» -> py.test Затем я даю ему имя типа « Все тесты с py.test "

Я выбираю Target: имя модуля И помещаю в модуль, где мои тесты (то есть «тесты» для меня), или модуль, где весь мой код находится, если мои тесты смешаны с моим кодом. Это сбило меня с толку.

Я установил интерпретатор Python.

Я установил рабочий каталог в каталог проекта.

2
Brian C.

С 2018.3 он автоматически обнаруживает, что я использую pytest, что приятно, но он по-прежнему не позволяет работать с верхнего уровня проекта. Мне пришлось запускать pytest для каждого каталога tests индивидуально.

Однако я обнаружил, что могу выбрать одну из конфигураций и вручную отредактировать ее для запуска в корне проекта, и это сработало. Я должен вручную выбрать его в раскрывающемся списке «Конфигурации» - не могу щелкнуть правой кнопкой мыши корневую папку на панели «Проект». Но, по крайней мере, это позволяет мне запускать все тесты одновременно.

0
sfjac

Мне пришлось сделать специальную настройку Python для Conda, включающую установку pip для py.test и использование надстройки Specs (опция --spec) (для Rspec, например, языка итоговых тестов Nice); 

1. Измените py.test по умолчанию, чтобы включить параметр = --spec, что означает использование плагина: https://github.com/pchomik/pytest-spec

2. Создайте новую тестовую конфигурацию, используя py.test. Измените его интерпретатор python, чтобы использовать ~/anaconda/envs/ваш выбор интерпретаторов, например, py27 для моих имен.

3. Удалите конфигурацию теста «unittests».

4.Теперь конфигурацией теста по умолчанию является py.test с моими прекрасными выводами в стиле Rspec. Я люблю это! Всем спасибо!

постскриптум Документ Jetbrains по настройкам запуска/отладки находится здесь: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test

0
AnneTheAgile