Як налаштувати PyCharm для запуску тестів py.test?


162

Я хочу почати писати одиничні тести для мого коду Python, і структура py.test здається кращою ставкою, ніж пакетний unittest Python . Тому я додав до свого проекту каталог "тести" та додав до нього test_sample.py . Тепер я хочу налаштувати PyCharm для запуску всіх тестів у моєму каталозі "тести".

PyCharm нібито підтримує py.test у своєму тестовому запуску . Ви повинні створити конфігурацію запуску / налагодження для запуску тестів, і PyCharm нібито має діалогове вікно "створити конфігурацію" спеціально для py.test . Але це повний обсяг їхньої документації з цього питання, і я ніде не можу знайти це передбачуване діалогове вікно.

Якщо я клацніть правою кнопкою миші каталог у вікні інструмента "Проект", я повинен побачити пункт меню "Створити <ім'я>", але єдиним пунктом меню, який починається зі "Створити", є "Створити конфігурацію запуску". Гаразд, можливо, документація просто неправильна, і "Створити конфігурацію запуску" звучить багатообіцяюче. На жаль, єдиними двома пунктами в його підменю є "Unittests in C: \ mypath ..." та "Doctests in C: \ mypath ...", жоден з яких не застосовується - я не використовую ні unittest, ні doctest. Немає пункту меню для py.test.

Якщо я відкрию test_sample.py і клацну правою кнопкою миші у вікні редактора, я отримаю обіцяні пункти меню "Створити <ім'я>": є "Створити" Unittests у test_sa ... '... ", а потім" Запустити " 'Unittests у test_sa ...' "та" Налагодження "Unittests у test_sa ... '". Отже, знову це все специфічно для єдиних тестових рамок; нічого для py.test.

Якщо я спробую пункти меню з надписом "unittest", я отримаю діалогове вікно з параметрами "Ім'я", "Тип", групове вікно "Тести" з "Папкою" та "Шаблон" та "Сценарій" та "Клас" "та" Функція "і т. д. Це звучить точно так, як це зафіксовано у діалоговому вікні для додавання конфігурації для тестування модуля Python , а не як параметри" Ім'я "та" Тест для запуску "та" Ключові слова ", які повинні відображатися у конфігурації діалогового вікна py.test . У діалозі немає нічого, щоб переключити тест-рамку, яку я додаю.

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

Як налаштувати PyCharm для запуску тестів py.test?

Відповіді:


228

Перейдіть у файл | Налаштування | Інструменти | Інтегровані інструменти Python та змініть тестовий бігун за замовчуванням на py.test. Тоді ви отримаєте опцію py.test для створення тестів замість одиничного тесту.


Га! Не знаю, як я це пропустив. Однак це працює лише наполовину: якщо я клацну правою кнопкою миші на папці у вікні інструменту Project, це дає мені можливість створювати doctests, а не py.tests. (Я напишу звіт про помилку.) Але він спрацьовує, якщо натиснути правою кнопкою миші редактор, а потім змінити "Script:" на ім'я каталогу.
Джо Вайт

3
Також пам’ятайте, що позначте свій вихідний каталог як «корінь джерел»: jetbrains.com/pycharm/webhelp/content-root.html
Інті,

1
Чи існує спосіб встановити це для всього проекту (або всіх проектів), а не для модуля?
OrangeDog

1
Здається, що File | Settings | Tools | Python Integrated Toolsце доступно лише в налаштуваннях проекту, а не в налаштуваннях за замовчуванням у PyCharm 5.
killthrush

2
Після налаштування, як ви насправді запускаєте тести?
Кріс Андерсон

51

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

2
У PyCharm 2017.3.2 навіть після того, як я встановив py.test за замовчуванням, коли я клацну правою кнопкою миші на проект на панелі "Проекти" та виберіть New => Python File, Kind:спадне меню пропонує лише: файл Python, тест модуля, заглушка Python, а не Pytest. Я переглянув усі місця, згадані в потоках вище. Що я пропускаю?
Том Бейкер

Файл Python, Unit test, Python stub - це файли python, з деякими заздалегідь визначеними даними, ви можете додати свої власні, прочитати цю тему jetbrains.com/help/pycharm/… . Але це не впливає на тест py.test, ви можете створити просто файл python, і він буде працювати. У цій темі ми обговорюємо, як налаштувати цю функцію jetbrains.com/help/pycharm/running-tests.html для запуску py.test.
Сергій Кубрак

В останньому PyCharm "За замовчуванням" називається "Шаблони"
AgDude

19

Я думаю, що вам потрібно використовувати пункт Запуск / налагодження налагодження на панелі інструментів. Клацніть по ньому та виберіть "Редагувати конфігурації" (або скористайтеся пунктом меню Виконати-> Змінити конфігурації). У розділі "За замовчуванням" на лівій панелі є пункт "py.test", який, на мою думку, ви хочете.

Я також виявив, що керівництво не відповідає цьому інтерфейсу. Сподіваюся, я правильно зрозумів проблему, і це допомагає.


4
Сторінка "За замовчуванням> py.test" насправді не дала мені ніякого способу створення конфігурації. Але якщо я перейшов до діалогового вікна "Редагувати конфігурації", натиснув кнопку "+" на панелі інструментів, вибрав "py.test" і встановив "Робочий каталог" в каталог, що містить мої тести, це створило конфігурацію, яка б запускала мої тести. Тож +1, щоб вказати мені на корисну частину програми. Я дам прийняту відповідь на @yole, оскільки я думаю, що зміна за замовчуванням на py.test є кращим рішенням - воно повинно дозволити мені запустити лише поточний файл і подібні речі.
Джо Уайт

@JoeWhite Будь ласка, додайте це як відповідь, оскільки це було корисно
Hariom Singh

У вікні редагування конфігурації, після вибору моєї конфігурації pytest, я також повинен був вибрати , Targetщоб бути Script athі вказати його в корінь моїх тестів папки
RAbraham

Це набагато кращий спосіб, оскільки він відкриває інші функції, а також передачу аргументів командного рядка тощо
chirag nayak

13

Ось як я змусив його працювати з 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 ():
    друк ("привіт пістест")
    стверджують, що правда
  1. Запустіть його за допомогою звичайної команди run


Чи є можливість запустити лише тест з поточного файлу? Я лише дізнався, що мені потрібно змінювати ім’я файлу в налаштуваннях config кожного разу, коли я відкриваю інший файл
algot

@algot Я не знаю цього на вершині голови. Подивіться на це: jetbrains.com/help/pycharm/performing-tests.html і це: jetbrains.com/pycharm/guide/tips/run-single-test
Бенджамін Крозьє

5

Це погано документально підтверджено. Як тільки ви додасте нову конфігурацію за замовчуванням, ви опинитесь у царині запуску сценарію "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py". Він не задокументований і має власні ідеї аргументів командного рядка.

Ти можеш:

  1. Спробуйте пограти, переверніть скрипт і подивіться, чи зможете ви якось отримати py.test, щоб прийняти аргументи. Це може спрацювати; це не було у перші півгодини для мене.
  2. Просто запустіть "py.test * .py" з консолі.

Як не дивно, вам буде важко знайти будь-яку дискусію, оскільки JetBrains робить хорошу роботу з бомбардування алгоритмів Google власними сторінками.


3

знайдіть цю тему, коли я потрапив на те саме питання і знайшов версію піхарми рішення: 2017.1.2 перейдіть до "Налаштування" -> "Інструменти" -> "Інтегровані інструменти Python" і встановіть тестовий бігунок за замовчуванням з правої бічної панелі як py.test вирішити мою проблему


Він буде працювати, але тоді вам потрібно клацнути правою кнопкою миші назву файла тестового сценарію у вікні проекту. Якщо ви клацніть правою кнопкою миші область редактора файлів того самого тестового сценарію, він, на жаль, все ще показує старий інструмент за замовчуванням (Unittests). Це дратує, оскільки я не можу вказати окрему функцію, яку я хочу перевірити.
Hongyu Zhang

3

У pycharm 2019.2 ви можете просто зробити це для запуску всіх тестів:

  1. Виконати> Редагувати конфігурації> Додати пістет
  2. Встановіть параметри, як показано на наступному скріншоті скріншот конфігурації
  3. Клацніть на налагодження (або запустіть pytest за допомогою, наприклад, клавіш Shift + Alt + F9)

Для більш високої інтеграції pytest у pycharm див. Https://www.jetbrains.com/help/pycharm/pytest.html


2

Я використовую 2018.2

Я запускаю -> Редагувати конфігурації ... Потім натискаю + у верхньому лівому куті діалогового вікна. Виберіть "python test" -> py.test Тоді я даю йому назву на кшталт "All test with py.test"

Я вибираю Target: name модуля і ввожу в модуль, де мої тести (тобто "тести" для мене) або модуль, де весь мій код, якщо мої тести змішуються з моїм кодом. Це мене відштовхувало.

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

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


0

З особливим налаштуванням пінтона Conda, яке включало встановлення pip для py.test плюс використання доповнення Specs (опція --spec) (для Rspec, як приємна підсумкова тестова мова), мені довелося це зробити;

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

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

3.Виберіть тестову конфігурацію "unittests".

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

ps Jetbrains 'doc на конфігурації run / debug знаходиться тут: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test


0

З 2018.3, схоже, автоматично виявляється, що я використовую pytest, що приємно, але він все ще не дозволяє запускати з верхнього рівня проекту. Мені довелося запускати pytestдля кожного testsкаталогу окремо.

Однак я виявив, що можу вибрати одну з конфігурацій і вручну відредагувати її для запуску в корені проекту, і це спрацювало. Мені потрібно вручну вибрати його у спадному меню Конфігурації - не можна клацнути правою кнопкою миші на кореневій папці на панелі "Проект". Але принаймні це дозволяє мені запускати всі тести одразу.


0

Увімкніть Pytest для вашого проекту

  1. Відкрийте Налаштування / Налаштування | Інструменти | Діалогове вікно налаштувань інтегрованих інструментів Python, як описано у виборі системи тестування.
  2. У полі тестування бігу за замовчуванням виберіть піст .
  3. Клацніть OK, щоб зберегти налаштування.

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.