PyCharm'ı py.test testlerini çalıştıracak şekilde nasıl yapılandırırım?


163

Python kodum için birim testleri yazmaya başlamak istiyorum ve py.test çerçevesi, Python'un paketlenmiş unittest'inden daha iyi bir bahis gibi geliyor . Bu yüzden projeme bir "testler" dizini ekledim ve ona test_sample.py ekledim . Şimdi PyCharm'ı "testler" dizinindeki tüm testleri çalıştıracak şekilde yapılandırmak istiyorum.

PyCharm'ın test koşucusunda py.test'i desteklediği iddia ediliyor . Sen edebilmek zannediyorsunuz koşmak / ayıklama yapılandırma oluşturmak için testler ve pycharm iddia edilen bir sahiptir py.test için özel olarak "yapılandırma oluşturmak" iletişim kutusunu . Ancak bu konudaki belgelerinin tam kapsamıdır ve bu iddia edilen iletişim kutusunu hiçbir yerde bulamıyorum.

Proje aracı penceresinde dizini sağ tıklarsam, "Oluştur <ad>" menü öğesini görmem gerekiyor , ancak "Oluştur" ile başlayan tek menü öğesi "Çalıştırma Yapılandırması Oluştur". Tamam, belki de belgeler yanlış ve "Run Configuration Configuration" kulağa umut verici geliyor. Ne yazık ki, alt menüsündeki yalnızca iki öğe, "C: \ mypath ... içindeki Unittests" ve "C: \ mypath ... içindeki Doctests" dir, ikisi de geçerli değildir - ne unittest ne de doctest kullanıyorum. Py.test için menü öğesi yok.

Test_sample.py'ımı açar ve editör penceresinde sağ tıklatırsam, vaat edilen "<name> Oluştur" menü öğelerini alıyorum: "Test_sa ...'..." içinde 'Unittests Oluştur' ve ardından "Çalıştır "Test_sa'da Unittests ..." "ve" Test_sa'da Unittests hatalarını ayıkla ... "". Yani yine, hepsi birim test çerçevesine özgü; py.test için hiçbir şey.

"Unittest" diyen menü öğelerini denersem, "Name", "Type", "Folder" ve "Pattern" ve "Script" ve "Class" içeren bir "Tests" grup kutusu içeren bir iletişim kutusu alıyorum "ve" İşlev "vb. Bu , Python Birim Testi için bir yapılandırma eklemek üzere iletişim kutusu olarak belgelenen gibi görünür ve gösterilmesi gereken" Ad "ve" Çalıştırmayı test et "ve" Anahtar kelimeler "seçenekleri gibi değil içinde py.test için yapılandırma iletişim. İletişim kutusunun içinde hangi test çerçevesini eklediğimi değiştirecek hiçbir şey yok.

Python 3.1.3 ve pytest 2.0.3 ile Windows üzerinde PyCharm 1.5.2 kullanıyorum. py.testTestlerimi komut satırından başarıyla çalıştırabiliyorum , bu yüzden pytest'in düzgün bir şekilde kurulmaması gibi basit bir şey değil.

PyCharm'ı py.test testlerimi çalıştıracak şekilde nasıl yapılandırırım?

Yanıtlar:


228

Lütfen Dosya | Ayarlar | Araçları | Python Tümleşik Araçlar ve varsayılan test çalıştırıcısını py.test olarak değiştirin. Ardından, unittest yerine test oluşturmak için py.test seçeneğini elde edersiniz.


Hah! Bunu nasıl özlediğimi bilmiyorum. Yine de sadece yarı çalışır: Proje aracı penceresindeki klasöre sağ tıklarsam, py.tests değil, doctest oluşturma seçeneği sunar. (Ben bir hata raporu yazacağım.) Ama editör sağ tıklayın ve sonra "Script:" dizin adına değiştirmek çalışır.
Joe White

3
Ayrıca, kaynak dizininizi bir "kaynak kökü" olarak işaretlemeyi unutmayın: jetbrains.com/pycharm/webhelp/content-root.html
Inti

1
Bunu modül başına değil tüm proje (veya tüm projeler) için ayarlamanın bir yolu var mı?
OrangeDog

1
File | Settings | Tools | Python Integrated ToolsPyCharm 5'teki Varsayılan Ayarlar yerine yalnızca Proje Ayarlarında kullanılabilir gibi görünüyor
killthrush

2
Yapılandırıldıktan sonra, testleri gerçekten nasıl çalıştırıyorsunuz?
Chris Anderson

51

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools- seç py.testolarak Default test runner.
  2. Django kullanıyorsanız Preference -> Languages&Frameworks -> Django- Kene ayarlaDo not use Django Test runner
  3. Daha önce var olan tüm test yapılandırmalarını temizleyin Run/Debug configuration, aksi takdirde testler bu daha eski yapılandırmalarla yapılacaktır.
  4. Bazı varsayılan ek bağımsız değişkenler ayarlamak için py.test varsayılan yapılandırmasını güncelleyin. Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments

2
PyCharm 2017.3.2'de, py.test'i varsayılan olarak ayarladıktan sonra bile, Projeler panelinde projeye sağ tıklayıp seçtiğimde New => Python File, Kind:açılır menü yalnızca Python dosyası, Birim testi, Python saplama, Pytest değil. Yukarıdaki konu başlıklarında belirtilen tüm yerlere baktım. Neyi kaçırıyorum?
Tom Baker

Python dosyası, Birim testi, Python saplama - bunlar önceden tanımlanmış verilerle python dosyalarıdır, kendi ekleyebilirsiniz, bu konuyu okuyun jetbrains.com/help/pycharm/… . Ancak bu, py.test testinin çalışmasını etkilemez, sadece bir python dosyası oluşturabilirsiniz ve çalışacaktır. Bu konuda, jetbrains.com/help/pycharm/running-tests.html bu özelliğin py.test'i çalıştıracak şekilde nasıl yapılandırılacağını tartışacağız .
Sergey Kubrak

En son PyCharm'da "Varsayılanlar", "Şablonlar" olarak adlandırılır
AgDude

19

Araç çubuğundaki Çalıştır / Hata Ayıklama Yapılandırması öğesini kullanmanız gerektiğini düşünüyorum. Tıklayın ve 'Yapılandırmaları Düzenle'yi tıklayın (veya alternatif olarak Çalıştır-> Yapılandırmaları Düzenle menü öğesini kullanın). Sol bölmedeki 'Varsayılanlar' bölümünde, istediğinizi düşündüğüm bir 'py.test' öğesi var.

Kılavuzun bunun için kullanıcı arayüzüyle eşleşmediğini de buldum. Umarım sorunu doğru anladım ve bu yardımcı olur.


4
"Varsayılanlar> py.test" sayfası bana aslında bir yapılandırma oluşturmanın bir yolunu vermedi. Ancak Yapılandırmaları Düzenle iletişim kutusuna gidersem, "+" araç çubuğu düğmesini tıkladı, "py.test" i seçti ve testlerimi çalıştıracak bir yapılandırma oluşturan testlerimi içeren dizine "Çalışma dizini" ayarladı. Bu yüzden +1 beni programın yararlı bir bölümüne yönlendirdi. @Yole için kabul edilen yanıtı vereceğim, çünkü varsayılanı py.test olarak değiştirmenin daha iyi bir çözüm olduğunu düşünüyorum - sadece mevcut dosyayı ve bunun gibi şeyleri çalıştırmama izin vermeli.
Joe White

@JoeWhite Lütfen yardımcı olduğu gibi cevap olarak ekleyin
Hariom Singh

Yapılandırma Düzenleme Penceresinde, pytest yapılandırmamı seçtikten sonra, Targetolmayı Script athve testler klasörümün köküne yönlendirmem gerekiyordu
RAbraham

Bu, komut satırı argümanlarını
vb.Gibi

13

İşte 3.7.2(pip ile yüklü) pytest ve pycharms ile çalışmasını nasıl yaptım 2017.3:

  1. Adresine git edit configurations

  1. Yeni bir çalıştırma yapılandırması ekleyin ve py.test

  1. Run config ayrıntılarında, target= pythonve aşağıdaki adsız alanı olarak ayarlamanız gerekir tests. Test klasörünüzün adı bu gibi görünüyor. Çok emin değilim zor. Ayrıca, -sargümanınızı öneririm, böylece testlerinizde hata ayıklarsanız, konsol düzgün davranacaktır. Tartışma pytest çıktı olmadan yakalar ve hata ayıklama konsol arabası yapar.

  1. Testler klasörüm böyle görünüyor. Bu, projemin ( my_project/tests) kökünün hemen altında .

  1. Dosyam foobar_test.py: (içe aktarmaya gerek yok):
def test_foobar ():
    yazdır ("merhaba pytest")
    iddia True
  1. Normal çalıştırma komutuyla çalıştırın


Sadece geçerli dosyadan test yapma imkanı var mı? Yalnızca başka bir dosyayı her
açışımda

@algot Bunu kafamın üstünde bilmiyorum. Şuna bir göz atın: jetbrains.com/help/pycharm/performing-tests.html ve şu: jetbrains.com/pycharm/guide/tips/run-single-test
Benjamin Crouzier

5

Emin olmak için belgelenmemiş. Varsayılanlardan yeni bir yapılandırma eklediğinizde, "/ Applications / PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py" komut dosyasını çalıştırma alanında olacaksınız. Belgelenmemiştir ve komut satırı argümanlarıyla ilgili kendi fikirleri vardır.

Yapabilirsin:

  1. Oynamaya çalışın, komut dosyasını ters çevirin ve argümanları kabul etmek için bir şekilde py.test alıp alamayacağınızı görün. Çalışabilir; benim için ilk yarım saatte olmadı.
  2. Bir konsoldan "py.test * .py" dosyasını çalıştırmanız yeterlidir.

Garip bir şekilde, JetBrains kendi sayfalarıyla Google algoritmalarını bombalamakta iyi bir iş çıkardığı için herhangi bir tartışma bulmakta zorlanacaksınız.


3

aynı soruya çarpıp çözüm pycharm sürümünü bulduğumda bu konuyu bul: 2017.1.2 "Tercihler" -> "Araçlar" -> "Python Entegre Araçları" na gidin ve sağ taraftaki panelden varsayılan test çalıştırıcısını py.test olarak ayarlayın sorunumu çöz


Çalışacak, ancak daha sonra Proje penceresinde test komut dosyası adını sağ tıklamanız gerekir. Bunun yerine aynı test komut dosyasının dosya düzenleyicisi alanına sağ tıklarsanız, maalesef eski varsayılan aracı (Unittests) gösterir. Test etmek istediğim bireysel işlevi belirleyemediğim için bu can sıkıcı bir durum.
Hongyu Zhang

3

Pycharm 2019.2'de, tüm testleri çalıştırmak için bunu yapabilirsiniz:

  1. Çalıştır> Yapılandırmaları Düzenle> Pytest ekle
  2. Seçenekleri aşağıdaki ekran görüntüsünde gösterildiği gibi ayarlayın yapılandırmanın ekran görüntüsü
  3. Hata Ayıkla'yı tıklayın (veya örneğin Shift + Alt + F9 kısayol tuşlarını kullanarak pytest'i çalıştırın)

Pytest'in pycharm'a daha yüksek entegrasyonu için bkz. Https://www.jetbrains.com/help/pycharm/pytest.html


2

2018.2 kullanıyorum

Çalıştır -> Yapılandırmaları Düzenle ... Daha sonra kalıcı iletişim kutusunun sol üst köşesindeki + işaretini tıklayın. "Python testleri" ni seçin -> py.test Sonra "py.test ile tüm testler" gibi bir isim veriyorum

Hedef: modül adını seçiyorum ve testlerimin olduğu modüle (benim için 'testler') veya testlerim kodumla karıştırılmışsa tüm kodumun bulunduğu modüle koydum. Bu beni harekete geçiriyordu.

Python yorumlayıcısını ayarladım.

Çalışma dizinini proje dizinine ayarladım.


0

Py.test artı Specs addin (seçenek --spec) kullanımı için pip kurulumunu içeren özel bir Conda python kurulumuyla (güzel test özeti dili gibi Rspec için) yapmak zorundaydım;

1. seçenek py - testini dahil etmek için varsayılan py.test öğesini düzenleyin, yani eklentiyi kullanın: https://github.com/pchomik/pytest-spec

2. py.test kullanarak yeni test yapılandırması oluşturun. Python yorumlayıcısını ~ / anaconda / envs / tercüman seçiminizi kullanacak şekilde değiştirin, örneğin isimlerim için py27.

3. 'unittests' test yapılandırmasını silin.

Şimdi varsayılan test yapılandırması benim güzel Rspec tarzı çıktılarımla py.test. Onu seviyorum! Herkese teşekkürler!

ps Jetbrains'in çalıştırma / hata ayıklama yapılandırmalarındaki dokümanı burada: https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test


0

2018.3 ile, güzel olduğunu, ancak yine de projenin en üst seviyesinden çalışmaya izin vermediğini pitest kullandığımı otomatik olarak tespit ediyor gibi görünüyor. pytestHer testsdizin için ayrı ayrı çalıştırmak zorunda kaldım .

Ancak, konfigürasyonlardan birini seçebileceğimi ve projenin kökünde çalışmak için manuel olarak düzenleyebileceğimi ve bunun işe yaradığını buldum. Konfigürasyonlar açılır menüsünde manuel olarak seçmem gerekiyor - Proje bölmesindeki kök klasöre sağ tıklayamıyorum. Ama en azından tüm testleri aynı anda yapmama izin veriyor.


0

Projeniz için Pytest'i etkinleştirin

  1. Ayarları / Tercihleri| Araçları | Test Çerçevenizi Seçme bölümünde açıklandığı gibi Python Entegre Araçlar ayarları iletişim kutusu.
  2. Gelen Standart Test koşucu alanında seçmek pytest .
  3. Ayarları kaydetmek için Tamam'ı tıklayın.

resim açıklamasını buraya girin

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.