Soru Burun, ubuntu'da test bulamıyor


Nose'un Ubuntu 9.04'te test yapamayacağının bir nedeni var mı?

Python 2.5.4 ile burun 0.11.1 kullanıyorum.
Testleri sadece dosya adını açıkça belirtirsem çalıştırabilirim. Eğer dosya ismini belirtmezsem, 0 test.

Aynı proje Mac'imde testlerimi iyi yapıyor, bu yüzden oldukça şaşırdım!


49
2017-09-21 21:55


Menşei


Testlerin yürütülmesini beklediğinizde tam olarak hangi komutu giriyorsunuz? - Mark Rushakoff
"nosetests --with-gae" veya sadece "nosetests". Ayrıca "testler" test dosyası dizinimin adı olan "nosetests testleri" ni de denedim. Tüm komutlar Mac üzerinde mükemmel çalışır, her iki makinede de burun yapılandırmaları değiştirilmemiştir. Test dosyalarını içe aktarıyorsam, ubuntu'da çalışıyorum. içinde.py test dizini ve "nosetests testleri" çalıştırın. Ancak bu sürdürülebilir değil. - Sudhir Jonathan
Koşmayı dene nosetests birkaçıyla -v'S ... -vv genellikle sorunlarımı çözmek için bana yeterince bilgi verdi. - David Wolever
Bize biraz dizin yapısını gösterir misiniz? Komutu çalıştırdığınız direkten, alt anahtarlar nelerdir ve hangi direktifler testlerdir? Test dir in altında in altında .py altında init var mı? Test dizininde çalıştırılmasını beklediğiniz bazı dosyaları listeleyin. - Heikki Toivonen
Size repo'ya erişim hakkı veremem, testler 'test' dizininde bulunuyor ve boş bir init.py var. Her test dosyasını init.py dosyasında içe aktarırsam ve 'nosetests testleri' çalıştırırsam, her şey ubuntu üzerinde çalışır. Ancak, yeni bir test eklediğimde init.py'yi güncelleyemem. Burnun Mac ve Ubuntu'da neden farklı davrandığını merak ediyorum. - Sudhir Jonathan


Cevaplar:


Bir dizi ile ilgili test çalıştırıyorsanız,

nosetests ... tests/

Testler benim testlerimin olduğu klasörün adıdır ve .py modüllerinden birinde ayrı bir python test fonksiyonuna sahiptir. Sizin fonksiyonlarınızın, test etmek istediğiniz bir test olarak tanınması için nota testlerinde 'test' ile başlamalıdır.

Örneğin:

 def test_something():
    ...

nosetests bu dizinde yürütüldüğünde bu işlevi çalıştıracaktır.

 def somethin_to_test():
    ...

olmazdı.


8
2017-09-17 21:55





Başka bir şey her zaman beni alır nose çalıştırılabilir dosyalarda test çalıştırmaz. Mac / Ubuntu'da bunun neden bir fark yaratacağından tam olarak emin değilim, ama bu bir şans.

Komutların bir şekilde almadığından emin olun. chmod +xMac’te d… Ve yaptılarsa, chmod -x $(find tests/ -name '*.py').


99
2017-10-16 18:57



Hala çalışmıyor ... ve sorun macda değil, ubuntu'da. - Sudhir Jonathan
Nose, varsayılan olarak sadece windows platformunda çalıştırılabilir modüllerdeki testlere bakmaz. Mac / ubuntu'da bunun olması için --noexe anahtarının kullanılması gerekirdi. - atlantis
benim için pencereler üzerinde çalıştı - Matteo Caprari
Kod bakıldığında çalıştırılabilirlerin atlandığını söyler dışında Windows ve IronPython'da. Bu problemi yaşadım ve kullanıyorum --exe benim için çalıştı. - Bryan Matthews
Teşekkür ederim! Bu saatlerce beni rahatsız ediyor! şimdi nose Son olarak tüm testlerimi komut satırında tek tek belirtmek zorunda kalmadan çalıştırır. - Ole


Bu davranış neredeyse kesin çünkü dosyalarınız burun testi eşleştirme davranışına göre adlandırılmamıştır. itibaren burun doktorları:

burun, çalışma dizininde bulunan python kaynak dosyalarından, dizinlerinden ve paketlerinden otomatik olarak testler yapar (mevcut çalışma dizinine varsayılan değer). TestMatch düzenli ifadesine uyan herhangi bir python kaynak dosyası, dizini veya paketi (varsayılan olarak: (?: ^ | [B _.-]) [Tt] est) bir test olarak toplanır. (veya testlerin toplanması için kaynak).

Vurgu benimdir.

Eşleştirilecek bazı örnek adlar:

  • TestFoo.py
  • Foo-Test.py
  • Foo_Test.py
  • Foo.Test.py (bunun Foo'yu içe aktarmaya çalışacağını ve eğer yapamayacaksa bir istisna oluşturacağını unutmayın)

Bir isim görünüyor eşleşecek gibi, ama aslında değil:

  • FooTest.py

Dosyalarınızı yeniden adlandırırsanız, gitmek için iyi olmalısınız.


Güncelleştirme: Gönderdiğiniz detaylardan bahsetmedim, ancak belki de test dizinleriniz eksik __init__.py Dosyalar?

... “testler” dizinlerinizin aslında modüller olduğundan emin olun (onlar boş __init__.py dosya).


57
2017-09-22 02:24



Bunu deneyeceğim ... şey şu, Mac'imde topladığım aynı dosyalar ... tüm platformlarda aynı maççıyı kullanamaz mı? - Sudhir Jonathan
NOSE_TESTMATCH ortam değişkeniniz farklı şekilde ayarlanmış olabilir veya nose / config.py'ye göz atabilirsiniz. code.google.com/p/python-nose/wiki/FindingAndRunningTests - Mark Rushakoff
Test dosyasını test dosyasında aldığımda çalışır. içinde.py ve çalıştırmak için modülü belirtin. Başka türlü. Dizini açıkça belirtmeden bile, tam olarak aynı dizin ve komutlar Mac'imde iyi çalışır. Hala bunu anlayamıyorum. - Sudhir Jonathan
İlk bağlantı ('burun dokümanları') okunan belgelere yönlendirir ve varolmaz. - skytreader
Ben eksik içindeTest modülü dizinindeki .py dosyası. Bu düzeltme bir cazibe gibi çalıştı! - FearlessFuture


Bende aynı problem vardı. Testlerim Windows'da iyi çalıştı, ama Ubuntu'da değil.

Ubuntu'da, koşarsan:

nosetests -vv --collect-only

Muhtemelen bir yürütülebilir dosya olduğu için test dosyanızı atladığını göreceksiniz: _Tools / LintControlFiles / test_HgLint.py çalıştırılabilir; atlanır

Burnu yürütülebilir dosyaları düşünmek için, şöyle çalıştırın:

nosetests --exe

38
2017-09-14 01:34





David-wolever'ın dediği gibi, yapamam Ubuntu'da çalıştırılabilir. Koşmak

nosetests -vv --collect-only 

Hangi dosyaların incelendiğine dair tüm detayları görmek için


16
2018-04-13 05:22





Burnun kaynağına, özellikle selector.py dosyasına baktıktan sonra, neler olduğuna bakarsanız,

https://github.com/nose-devs/nose/blob/master/nose/selector.py#L129

Eğer kontrol edersek wantFile, self.matches denir, sonra bir regex karşı aramak match, hangisini geçersiniz? testMatch.

Sorun, daha sonra (ve bu dosya boyunca) daha sonra denetlediğinizde oluşur.

https://github.com/nose-devs/nose/blob/master/nose/selector.py#L152

Karşı tekrar aynı tür kontroller yapıyor wantFunction.

Bu, eğer paketiniz için farklı bir yapıya sahipseniz, kapsayıcıponfili ve gerçek test sınıfınız / fonksiyonunuz varsa, her aşamada bunu karşılamak için çılgın bir karmaşık regex oluşturmanız gerekecektir.

Benim için, bunu öğrendiğimde, paket, kapsayıcı ve test işlevlerimi ortak bir bit ile öneklemeyi seçtim, yani.

setests ├── __init__.py ├── setest_area1.py └──── def setest_someblock(): ...

Ve sonra benim nose komut gibi çalışır

nose --testMatch="setest"

Bu, çalışmasını beklediğim yolu filtreler.


1
2018-01-12 19:51





Kullan -all-modules ve tüm testleri bulacaksınız.

nosetests --all-modules ./tests


1
2017-12-20 15:15