py.test kullanarak, farklı dizinde aynı adlı iki sınama, py.test'in başarısız olmasına neden olur. Neden? Tüm testleri yeniden adlandırmadan bunu nasıl değiştirebilirim? çoğaltmak içinpy.test - farklı dizinlerdeki sınamalar aynı çağrıda bulunulduğunda sınama hatasını sınama
yapın:
; cd /var/tmp/my_test_module
; mkdir -p ook/test
; mkdir -p eek/test
; touch ook/test/test_proxy.py
; touch eek/test/test_proxy.py
; py.test
============================= test session starts ==============================
platform linux2 -- Python 2.7.3 -- pytest-2.2.4
collected 0 items/1 errors
==================================== ERRORS ====================================
___________________ ERROR collecting ook/test/test_proxy.py ____________________
import file mismatch:
imported module 'test_proxy' has this __file__ attribute:
/home/ygolanski/code/junk/python/mymodule/eek/test/test_proxy.py
which is not the same as the test file we want to collect:
/home/ygolanski/code/junk/python/mymodule/ook/test/test_proxy.py
HINT: remove __pycache__/.pyc files and/or use a unique basename for your test file modules
=========================== 1 error in 0.01 seconds ============================
__init__.py gerektiren bir anlam ifade ediyor. Bir test bir pakette değilse, o zaman temel olarak üst düzey bir modül (OP, test_proxy'de) ve sadece bir tane olmalıdır. Test modüllerini ilgili paketlere yerleştirerek (ook ve eek), testlerin doğru bir ismini verir. Ben statükonun en iyisi olduğunu söylüyorum. Bu soruna bir hata mesajı bağlantısının olması ya da dokümanlardaki konuyla ilgili çalışmanın gerekçesini ve tekniğini açıklayan bir şeyle ilgili bazı acıyı hafifletebilir. –
Sadece pyCest docs özellikle test dizinlerinde '__init __. Py' komutunu kullanmamaya dair bir nottur: _ Test dizinlerinizde __init __. Py' dosyalarını kullanmaktan kaçının.Bu şekilde testleriniz mypkg'ın kurulu bir sürümüne karşı kolayca çalışabilir. Kurulu paketin testleri içerip içermediğinden bağımsız olarak "_. [Pytest.org - İyi Entegrasyon Uygulamaları] 'dan alınmıştır (http://pytest.org/latest/goodpractises.html#choosing-a-test-layout-import-rules). – famousgarkin
Güncelleme: @ famousgarkin 'in yukarıdaki tavsiyesi ve yanıtı (https://stackoverflow.com/a/21942491/260303) artık dokümanlar içinde görünmüyor (en azından "kaçının" aranması alıntıyı getirmiyor yukarıda): https://docs.pytest.org/en/latest/goodpractices.html#tests-as-part-of-application-code. Aslında, bu bağlantıdaki örnekler test dizinlerinde '__init __. Py' gösterir, dolayısıyla kabul edilen cevap doğrudur. –