burun vs pytest - beni seçmeme neden olan (öznel) farklılıklar nelerdir? [kapalı]


85

Bir sürü (birim) testle, oldukça büyük (çok iş parçacıklı) bir Python projesi üzerinde çalışmaya başladım. Buradaki en önemli sorun, uygulamanın çalıştırılmasının bir içerik yöneticisi tarafından uygulanan önceden ayarlanmış bir ortam gerektirmesidir. Şimdiye kadar, bu yönetici içinde testleri çalıştıracak, ancak farklı test modülleri arasında bağlam değiştirmeye izin vermeyen birim test çalıştırıcısının yamalı bir versiyonunu kullandık.

Hem burun hem de pytest böyle bir şeyi destekliyor çünkü birçok ayrıntıda armatürleri destekliyorlar, bu yüzden burun veya pytest'e geçmeyi düşünüyoruz. Bu kitaplıkların her ikisi de 'etiketleme' testlerini destekler ve yalnızca bu etiketli alt kümeleri çalıştırır ki bu bizim de yapmak istediğimiz bir şeydir.

Hem burnun hem de pytest'in belgelerine biraz bakıyordum ve görebildiğim kadarıyla bu kitaplıkların büyük kısmı, farklı adlandırılmaları veya biraz farklı sözdizimi gerektirmesi dışında, esasen aynı işlevi destekliyor. Ayrıca, mevcut eklentilerde bazı küçük farklılıklar olduğunu fark ettim (burnun çoklu işlem desteği var, örneğin pytest görünmüyor)

Öyle görünüyor ki, şeytan ayrıntıda gizlidir, bu da (genellikle en azından) kişisel zevklerimize göre ve kişisel zevkimize en iyi uyan kütüphaneyi seçsek iyi olur.

Bu nedenle, ihtiyaçlarımıza en iyi uyan kütüphane / topluluk kombinasyonunu seçmek için neden burun veya pytest ile gitmem gerektiğine dair öznel bir argüman sormak istiyorum.


Az çok aynı sorunun burada da sorulduğunu belirttim - ama bu beş yıl önceydi, bu yüzden soruyu yeniden sormanın mantıklı olduğunu düşünüyorum
Jakob van Bethlehem

9
pytestpytest-xdist eklentisi aracılığıyla çoklu işlem desteğini destekler .
Bruno Oliveira

2
Bir kenara, bağlam yöneticileri sadece düz Python nesneleri vardır ve diyebiliriz manager.__enter__()Gözlerinde farklı TestCase.setUp()ve manager.__exit__()öğenize tearDown().
rescdsk

Yanıtlar:


80

Pylons için varsayılan olduğu için Nose kullanıyordum. Ben hiç beğenmedim. Birden fazla yerde yapılandırma eğilimleri vardı, neredeyse her şey, her şeyi daha da dolaylı ve kafa karıştırıcı hale getiren, eksik belgelenmiş bir eklentiyle yapılmış gibi görünüyordu ve varsayılan olarak birim testi testleri yaptığı için, düzenli olarak Unicode iz yutaklarından koparak hata kaynaklarını gizledi.

Son birkaç yıldır py.test'ten oldukça memnunum. Sadece bir test yazmak mümkün olan assertkutusunun dışarı beni testler yazılı nefret yapar yolu az ve çekirdek oldukça kolay olmuştur üstünde ihtiyacım olursa olsun hack. Sabit bir eklenti arayüzünden ziyade, sadece bir yığın kancaya ve daha fazla araştırma yapmanız gerektiğinde oldukça anlaşılır bir kaynak koduna sahiptir. Hatta py.test altında Testify testleri çalıştırmak için bir adaptör bile yazdım ve Testify ile py.test'ten daha fazla sorun yaşadım.

Bununla birlikte, burnun sınıfsız testler için eklentileri olduğunu duydum ve bugünlerde iç gözlemi iddia ediyorum, bu yüzden muhtemelen ikisinde de iyi olacaksınız. Yine de py.test ile koşarak yere vurabileceğimi hissediyorum ve kırıldığında neler olduğunu anlayabiliyorum.


2
İz boşluklarını gizlemeyle ilgili bazı problemler, yıllar önce burun 0.11 civarında düzeltildi. Python 3 bağlantı noktasından bu yana, herhangi bir unicode izleme eksikliğinin daha az sıklıkta olmasını bekliyorum (şahsen, burnumda yalnızca bir kez bir unicode sorunuyla karşılaştığımı düşünüyorum, bu da onu bir "numara" yapan bazı "hile" yapan bazı test senaryosu temel sınıfıyla birleştirdiğimde ortaya çıktı. gerçekten mantıklı - bu yüzden bu burun hatası olmadığı ortaya çıktı). Gerçekte, her iki aletin de yıllar içinde pürüzlü kenarlarını ortadan kaldırdığından şüpheleniyorum, bu yüzden belki de en son hangisini kullandığınızı en çok
seveceksiniz

peki ya son dokümantasyon bölümü. Ayrıca nosetests veya py.test kullanmam konusunda kafam karıştı. her ikisi de eşit derecede iyi görünüyor ama okuduğum gibi, bu günlerde çoğu insan burun testlerini kullanıyor. Py.tests'in daha iyi çoklu işlem kitaplıklarına sahip olmasının nedeni ne olabilir?
proprius

1
@porshipus, sadece yanlış testler önce gelebilir. bazı çerçeveler buna destek ekledi, bu çerçeveleri kullanan projeler varsayılan olarak onu kullandı ve yayıldı. ayrıca, py.test burun ve birim test testlerini çalıştırabilirken, olağan stili sınıflar etrafında düzenlenmemiştir, bu nedenle py.test'e geçiş göz korkutucu gelebilir.
Eevee

4
pytest'in dokümantasyon bölümünü okumaya başladım ve hem çoklu işlem amacıyla hem de yeni bir arı için öğrenme açısından pytest'in daha iyi bir seçim olduğunu fark ettim.
proprius
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.