Bagaimana cara mengkonfigurasi PyCharm untuk menjalankan tes py.test?

163

Saya ingin memulai menulis tes unit untuk kode Python saya, dan py.test kerangka suara seperti taruhan yang lebih baik daripada Python dibundel unittest . Jadi saya menambahkan direktori "tes" ke proyek saya, dan menambahkan test_sample.py ke dalamnya. Sekarang saya ingin mengkonfigurasi PyCharm untuk menjalankan semua tes di direktori "tes" saya.

PyCharm diduga mendukung py.test dalam test runner-nya. Anda seharusnya dapat membuat konfigurasi run / debug untuk menjalankan tes Anda, dan PyCharm diduga memiliki kotak dialog "buat konfigurasi" khusus untuk py.test . Tapi itulah dokumentasi lengkap mereka tentang masalah ini, dan saya tidak dapat menemukan kotak dialog ini di mana pun.

Jika saya mengklik kanan direktori di jendela Project tool, saya seharusnya melihat item menu "Create <name>", tetapi satu-satunya item menu yang dimulai dengan "Create" adalah "Create Run Configuration". Oke, mungkin dokumentasinya salah, dan "Buat Konfigurasi Run" memang terdengar menjanjikan. Sayangnya, hanya dua item dalam submenu adalah "Unittests in C: \ mypath ..." dan "Doctests in C: \ mypath ...", yang keduanya tidak berlaku - Saya tidak menggunakan unittest atau doctest. Tidak ada item menu untuk py.test.

Jika saya membuka test_sample.py dan klik kanan di jendela editor, saya mendapatkan item menu "Buat <nama>" yang dijanjikan: ada "Buat 'Unittests di test_sa ...'...", diikuti oleh "Jalankan 'Unittests di test_sa ...' "dan" Debug 'Unittests di test_sa ...' ". Jadi sekali lagi, itu semua khusus untuk kerangka kerja yang paling bebas; tidak ada untuk py.test.

Jika saya mencoba item menu yang mengatakan "unittest", saya mendapatkan kotak dialog dengan opsi untuk "Name", "Type", kotak grup "Tests" dengan "Folder" dan "Pattern" dan "Script" dan "Class "dan" Fungsi ", dll. Ini terdengar persis seperti apa yang didokumentasikan sebagai dialog untuk menambahkan konfigurasi untuk Uji Unit Python , dan tidak seperti opsi" Nama "dan" Uji untuk menjalankan "dan" Kata Kunci "yang seharusnya muncul dalam konfigurasi untuk dialog py.test . Tidak ada di dalam dialog untuk mengganti kerangka uji mana yang saya tambahkan.

Saya menggunakan PyCharm 1.5.2 di Windows dengan Python 3.1.3 dan pytest 2.0.3. Saya berhasil menjalankan py.testtes dari baris perintah, jadi ini bukan sesuatu yang sederhana seperti pytest yang tidak diinstal dengan benar.

Bagaimana cara mengkonfigurasi PyCharm untuk menjalankan tes py.test saya?

Joe White
sumber

Jawaban:

228

Silakan buka File | Pengaturan | Alat | Python Integrated Tools dan ubah pelari uji default ke py.test. Kemudian Anda akan mendapatkan opsi py.test untuk membuat tes, bukan yang belum dikirim.

Yole
sumber
Hah! Tidak tahu bagaimana saya melewatkan itu. Itu hanya setengah bekerja, meskipun: jika saya klik kanan pada folder di jendela alat Project, itu memberi saya pilihan untuk membuat doctests, bukan py.tests. (Saya akan menulis laporan bug.) Tapi itu berfungsi jika saya klik kanan di editor dan kemudian ubah "Script:" ke nama direktori.
Joe White
3
Juga ingat tandai direktori sumber Anda sebagai "sumber root": jetbrains.com/pycharm/webhelp/content-root.html
Inti
1
Apakah ada cara untuk mengatur ini untuk seluruh proyek (atau semua proyek) daripada per-modul?
OrangeDog
1
Tampaknya File | Settings | Tools | Python Integrated Toolshanya tersedia di Pengaturan Proyek daripada Pengaturan Default di PyCharm 5.
killthrush
2
Setelah dikonfigurasi, bagaimana Anda benar-benar menjalankan tes?
Chris Anderson
51

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- Pilih py.testsebagai Default test runner.
  2. Jika Anda menggunakan Django Preference -> Languages&Frameworks -> Django- Set centang padaDo not use Django Test runner
  3. Hapus semua konfigurasi tes yang ada dari sebelumnya Run/Debug configuration, jika tidak tes akan dijalankan dengan konfigurasi yang lebih lama.
  4. Untuk mengatur beberapa pembaruan tambahan argumen standar py.test konfigurasi default. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
Sergey Kubrak
sumber
2
Di PyCharm 2017.3.2, bahkan setelah saya menetapkan py.test sebagai default, ketika saya klik kanan pada proyek di panel Projects dan pilih New => Python File, Kind:dropdown hanya menawarkan: file Python, Unit test, Python stub, bukan Pytest. Saya telah melihat semua lokasi yang disebutkan dalam utas di atas. Apa yang saya lewatkan?
Tom Baker
File python, Tes unit, rintisan Python - mereka adalah file python, dengan beberapa data yang telah ditentukan, Anda dapat menambahkan sendiri, baca topik ini jetbrains.com/help/pycharm/… . Tapi ini tidak berpengaruh menjalankan tes py.test, Anda hanya bisa membuat file python dan itu akan berhasil. Dalam topik ini kita membahas cara mengkonfigurasi fitur ini jetbrains.com/help/pycharm/running-tests.html untuk menjalankan py.test.
Sergey Kubrak
Dalam PyCharm terbaru, "Defaults" disebut "Templates"
AgDude
19

Saya pikir Anda perlu menggunakan item Konfigurasi Jalankan / Debug pada bilah alat. Klik dan 'Edit Konfigurasi' (atau gunakan item menu Run-> Edit Configurations). Di bagian 'Defaults' di panel kiri ada item 'py.test' yang saya pikir adalah yang Anda inginkan.

Saya juga menemukan bahwa manual tidak cocok dengan UI untuk ini. Semoga saya mengerti masalahnya dengan benar dan itu membantu.

Scott Griffiths
sumber
4
Halaman "Defaults> py.test" tidak benar-benar memberi saya cara untuk membuat konfigurasi. Tetapi jika saya pergi ke dialog Edit Konfigurasi, klik tombol toolbar "+", pilih "py.test", dan atur "Direktori kerja" ke direktori yang berisi tes saya, yang memang membuat konfigurasi yang akan menjalankan tes saya. Jadi +1 untuk menunjukkan saya ke bagian yang bermanfaat dari program ini. Saya akan memberikan jawaban yang diterima untuk @yole, karena saya pikir mengubah default ke py.test adalah solusi yang lebih baik - itu harus membiarkan saya menjalankan file saat ini, dan hal-hal seperti itu.
Joe White
@JoeWhite Harap tambahkan sebagai jawaban karena membantu
Hariom Singh
Pada jendela Edit Configuration, setelah memilih konfigurasi pytest saya, saya juga harus memilih Targetuntuk menjadi Script athdan arahkan ke root folder tes saya
RAbraham
Ini adalah cara yang jauh lebih baik karena membuka fitur lain juga seperti melewati argumen baris perintah dll.
chirag nayak
13

Inilah cara saya membuatnya bekerja dengan pytest 3.7.2(diinstal melalui pip) dan pycharms 2017.3:

  1. Pergi ke edit configurations

  1. Tambahkan run config baru dan pilih py.test

  1. Dalam detail konfigurasi run, Anda perlu mengatur target= pythondan bidang tanpa nama di bawah ke tests. Sepertinya ini adalah nama folder tes Anda. Tidak terlalu yakin tangguh. Saya juga merekomendasikan -sargumen sehingga jika Anda men-debug tes Anda, konsol akan berperilaku baik. Tanpa argumen pytest menangkap output dan membuat buggy konsol debug.

  1. Folder tes saya terlihat seperti itu. Ini tepat di bawah root proyek saya ( my_project/tests).

  1. foobar_test.pyFile saya : (tidak perlu impor):
def test_foobar ():
    print ("hello pytest")
    nyatakan benar
  1. Jalankan dengan perintah jalankan normal

Benjamin Crouzier
sumber
Apakah ada kemungkinan hanya menjalankan tes dari file saat ini? Saya hanya menemukan bahwa saya perlu mengubah nama file dalam pengaturan konfigurasi setiap kali saya membuka file lain
algot
@ algot Saya tidak tahu itu di atas kepala saya. Lihatlah ini: jetbrains.com/help/pycharm/performing-tests.html dan ini: jetbrains.com/pycharm/guide/tips/run-single-test
Benjamin Crouzier
5

Sangat tidak terdokumentasi dengan pasti. Setelah Anda menambahkan konfigurasi baru dari default, Anda akan berada di ranah menjalankan skrip "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py". Itu tidak didokumentasikan dan memiliki ide-ide argumen baris perintah.

Kamu bisa:

  1. Cobalah untuk bermain-main, balikkan skrip, dan lihat apakah Anda bisa mendapatkan py.test untuk menerima argumen. Mungkin berhasil; itu tidak dalam setengah jam pertama bagi saya.
  2. Jalankan "py.test * .py" dari konsol.

Anehnya, Anda akan kesulitan menemukan diskusi apa pun karena JetBrains melakukan pekerjaan yang baik untuk membom algoritma Google dengan halaman-halamannya sendiri.

Charles Merriam
sumber
3

temukan utas ini ketika saya mengenai pertanyaan yang sama dan temukan solusinya pycharm versi: 2017.1.2 buka "Preferences" -> "Tools" -> "Python Integrated Tools" dan atur test runner default dari panel sisi kanan sebagai py.test pecahkan masalah saya

jacobcan118
sumber
Ini akan berhasil, tetapi kemudian Anda harus mengklik kanan nama file skrip uji di jendela Proyek. Jika Anda mengklik kanan area editor file dari skrip pengujian yang sama, sayangnya itu masih menunjukkan alat default lama (Unittests). Ini menjengkelkan karena saya tidak bisa menentukan fungsi individual yang ingin saya uji.
Hongyu Zhang
3

Di pycharm 2019.2, Anda cukup melakukan ini untuk menjalankan semua tes:

  1. Jalankan> Edit Konfigurasi> Tambah pytest
  2. Tetapkan opsi seperti yang ditunjukkan pada tangkapan layar berikut tangkapan layar konfigurasi
  3. Klik pada Debug (atau jalankan pytest menggunakan misalnya hotkeys Shift + Alt + F9)

Untuk integrasi yang lebih tinggi dari pytest ke pycharm, lihat https://www.jetbrains.com/help/pycharm/pytest.html

gebbissimo
sumber
2

Saya menggunakan 2018.2

Saya Lakukan Jalankan -> Edit Konfigurasi ... Kemudian klik + di kiri atas dialog modal. Pilih "tes python" -> py.test Lalu saya beri nama seperti "All test with py.test"

Saya memilih Target: nama modul dan memasukkan modul di mana tes saya (yaitu 'tes' untuk saya) atau modul di mana semua kode saya adalah jika tes saya dicampur dengan kode saya. Ini membuatku tersandung.

Saya menetapkan juru bahasa Python.

Saya mengatur direktori kerja ke direktori proyek.

Brian C.
sumber
0

Dengan setup python Conda khusus yang termasuk instalasi pip untuk py.test plus penggunaan Specs addin (opsi --spec) (untuk Rspec seperti bahasa ringkasan pengujian yang bagus), saya harus melakukannya;

1.Edit py.test default untuk menyertakan opsi = --spec, yang berarti menggunakan plugin: https://github.com/pchomik/pytest-spec

2. Buat konfigurasi pengujian baru, menggunakan py.test. Ubah juru bahasa python-nya untuk menggunakan ~ / anaconda / envs / penerjemah pilihan Anda, mis. Py27 untuk namaku.

3. Hapus konfigurasi tes 'unittests'.

4. Sekarang konfigurasi uji standar adalah py.test dengan output gaya Rspec saya yang indah. Aku menyukainya! Terima kasih semuanya!

ps Jetbrains 'dalam menjalankan / men-debug konfigurasi ada di sini: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test

AnneTheAgile
sumber
0

Dengan 2018.3 tampaknya secara otomatis mendeteksi bahwa saya menggunakan pytest, yang bagus, tetapi masih tidak memungkinkan berjalan dari tingkat atas proyek. Saya harus menjalankan pytestuntuk setiap testsdirektori secara individual.

Namun, saya menemukan bahwa saya dapat memilih salah satu konfigurasi dan mengeditnya secara manual untuk dijalankan pada root proyek dan ini berhasil. Saya harus secara manual memilihnya di drop-down Konfigurasi - tidak dapat mengklik kanan pada folder root di panel Project. Tapi setidaknya itu memungkinkan saya untuk menjalankan semua tes sekaligus.

sfjac
sumber
0

Aktifkan Pytest untuk proyek Anda

  1. Buka Pengaturan / Preferensi | Alat | Dialog pengaturan Alat Terpadu Python seperti yang dijelaskan dalam Memilih Kerangka Pengujian Anda.
  2. Di bidang Default runner test pilih pytest .
  3. Klik OK untuk menyimpan pengaturan.

masukkan deskripsi gambar di sini

Milo Chen
sumber