Как запустить доктрины с помощью PyCharm?

В среде IDE PyCharm, если я щелкнул правой кнопкой мыши на функции/методе с помощью доктрины, иногда в контекстном меню выдается опция " Запустить" Doctest my_function_name "", а иногда вместо контекстного меню правой кнопки мыши вы можете запустить весь файл (НЕ как доктрину).

Что определяет, когда он даст опцию "run doctest", а когда нет? Есть ли способ заставить его так или иначе?

Ответы

Ответ 1

Запуск модуля (или тестов в нем) в PyCharm выполняется с помощью Run Configuration. Когда вы щелкните правой кнопкой мыши модуль, PyCharm ищет существующий Run Configuration для этого модуля. Если найдена конфигурация (это может быть связано с предыдущим запуском или ручным созданием Configuration), PyCharm предложит только запустить эту конфигурацию.

Например, если была создана конфигурация module.py для запуска ее doctests, это опция, которую мы увидим, щелкнув правой кнопкой мыши module.py. Однако, если конфигурация не найдена, PyCharm предлагает запустить модуль в разных вариантах, в зависимости от кода в модуле (регулярно запускать или запускать doctests/unittests). После выбора опции PyCharm неявно создает соответствующий, временный, Run Configuration. Здесь, при щелчке правой кнопкой мыши по модулю, вы получите только конфигурацию, созданную для этого модуля.

Важное примечание: PyCharm сохраняет до 6 временных (т.е. Configurations, которые были созданы при запуске модуля) Run Configurations - 3 в "Python", то есть скрипты и 3 в "Тесты Python". Это означает, что если вы запустите moduleA.py, moduleB.py, moduleC.py, а затем moduleD.py, временный Configurations в PyCharm будет moduleB.py, moduleC.py и moduleD.py. Конфигурация moduleA.py будет автоматически удалена, если явно не сохранено.

Это поведение можно воспроизвести следующим образом:

  • В PyCharm создайте новый модуль Python: "temp"

2. Добавьте в модуль следующее:

"""
    >>> print 3.14
    3.14
"""

if __name__ == '__main__':
    pass
  1. Щелкните правой кнопкой мыши в разделе doctest, чтобы выбрать "Run" Doctests in temp "
  2. Щелкните правой кнопкой мыши в разделе main, чтобы указать "Запустить" temp '"
  3. Выбор любого из параметров делает другой вариант исчезающим в последующих запусках. Например, выбрав запустить, модуль будет запускать опцию Doctests в последующих прогонах и наоборот. Возвращаясь к первому этапу, где можно было выбрать один из двух вариантов, можно, удалив модуль "Запустить конфигурацию":

Выполнить → Изменить конфигурацию → Найти текущую конфигурацию модуля (обычно выделено) → Нажмите кнопку "Минус" (верхний левый угол) → Нажмите "Применить" → Нажмите "ОК". Теперь мы вернемся к шагу 3.

(Воспроизводится в PyCharm 5.0 и 4.5)

Подводя итог:

  • Если no Run Configuration найдено, PyCharm предлагает запустить модуль любым возможным способом (как script, doctests или unittests)
  • Если найдено a Run Configuration, PyCharm предлагает только Configuration.
  • Если PyCharm не дает вам вариант запуска, который вы хотите найти, найдите Run Configuration, который мешает ему предоставить вам этот параметр и удалить его, или создать новый, который будет запускаться файл или метод/функцию, как вы хотите.

Ответ 2

Если вы не хотите удалять конфигурации, вы также можете нажать клавишу быстрого доступа для Run | Возобновить программу (F9 для меня), чтобы открыть полный список вариантов

Ответ 3

Если вышеперечисленное не работает для вас - убедитесь, что ваш модуль не называется doctest; это вызовет конфликт и, следовательно, вызовет исключение.