2014-04-20 16 views
6

tox website listelenen ilk uzun metrajlı "paketiniz farklı Python sürümleri ve tercümanlar ile düzgün yükler kontrol" olduğunu kullanmayın. Bu, setup.py'imi bozarsam, testlerin geçemeyeceğini ve setup.py'imin kötü gittiği konusunda uyarılacağımı düşünmeme neden olur.testleri mutlaka yüklü kodu

Bu durum böyle değil. Oluyor hatta kod yerel dizinden ithal olmasıdır (aka {toxinidir}), size tox.ini aynı dizinde Modülünüzü veya paketi koyarak olağan biçim kullanılıyorsa. Bu, setup.py'nizin hiç bir şey yapmadığını ve toksinin size iyi bir şey yapabildiğini gösterir. Bu noktada, pypi'ye itildikten ve şeyi kullanmaya çalışıncaya kadar sorunu fark etmemek oldukça kolay. Bu, önlemek için toksiyi sevmem gereken bir sorundur.

Temel sorun, boş dizenin sys.path üzerinde sınanmasıdır. Python bunu mevcut çalışma dizini anlamına gelir ve buradan içe aktarır.

yerel dizin testleri sırasında kullanılmadığını Tox böyle yapılandırmak için herhangi bir yolu var mı?

anda benim geçici çözüm cd {envtmpdir} && coverage run && mv .coverage {toxinidir} için, ama bu besbelli çirkin kesmek olduğunu. İşte

bizim kod iki versiyonunu sağlar:

Amacım yukarıdaki sorunu engeller Zehir yapılandırmasını bulmaktır ve tavsiye için yeterince makul tüm projelerde kullanım için.

cevap

1

nosetests'un çalışması sırasında sys.path değiştirdiğini fark ettim: Bu, kullanıma hazır kodu en başa ekliyor. Bu aslında ayrılık zehirini bozmaya çalışıyor. Bunu düzeltmek için, sadece eklemek zorunda -P bayrağı nosetests: Ayrıca

[tox] 
envlist = py27 

[testenv] 
commands= 
    nosetests -P tests 
deps= 
    nose 
    -rrequirements.txt 

, ben test dışı kodunun herhangi ing import gelen burun önlemek için (tests/ dizinine işaret burun) tests eklemek zorunda (Ödeme içinde oluşturulabilecek veya yapılamayacak C-uzantıları kullanıyorum).