2017-02-17 12 views

cevap

-2

Komut satırı bayraklarıyla eklentileri devre dışı bırakmanın daha kolay olduğu için bunu yapmaya hiç gerek duymadım. Bir çözüm olarak -c seçeneği kullanarak farklı bir ini dosyası belirtebilirsiniz ya ve ya farklı ini dosyası var ya da ben gerçekten ihtiyacınız varsa, böyle bir şey yapabileceğini

$ cat pytest.ini 
[pytest] 
addopts= -p no:django 
$ py.test 
================================================= test session starts 
platform linux -- Python 3.4.3, pytest-3.0.5, py-1.4.32, pluggy-0.4.0 
rootdir: /home/me/python, inifile: pytest.ini 
plugins: pep8-1.0.6, cov-2.4.0 
collected 0 items 
============================================ no tests ran in 0.02 seconds  
$ py.test -c /dev/null 
================================================= test session starts 
platform linux -- Python 3.4.3, pytest-3.0.5, py-1.4.32, pluggy-0.4.0 
rootdir: /home/me/python, inifile: /dev/null 
plugins: django-3.1.2, pep8-1.0.6, cov-2.4.0 
collected 0 items 
============================================ no tests ran in 0.02 seconds 

aşağıda olduğu gibi hatta /dev/null kullanın. py.test -c <(grep -v no:django pytest.ini), unix adlı bir unix kullanarak ve eklenti satırını kaldırmak için grep veya sed'u kullanın. Ancak tüm eklentileri varsayılan olarak kullanmak ve komut satırı üzerinden devre dışı bırakmak daha kolay görünüyor.

py.test -c <(grep -v no:django pytest.ini) 
================================================= test session starts 
platform linux -- Python 3.4.3, pytest-3.0.5, py-1.4.32, pluggy-0.4.0 
rootdir: /home/me/python, inifile: /dev/fd/63 
plugins: django-3.1.2, pep8-1.0.6, cov-2.4.0 
collected 0 items 
============================================ no tests ran in 0.03 seconds 

Alternatif ben pytest.ini içinde addopts= -p no:myplugin belirtmek olmaz ve onları kapatmak istediğinde yerine PYTEST_ADDOPTS ortam değişken kullanın. Ancak bu,

+0

teşekkürler, evet bu 'pytest.ini' dosyasından sakınmak için iyidir, ancak bir sorun zaten orada bazı eklentileri devre dışı bırakılmış olabilir ve buradaki fikir yalnızca gerçekten bir tane – eLRuLL

+0

gerçekten etkinleştirmeniz gerekiyorsa, bir şey yapabilirsin. 'py.test -c <(grep -v no: django pytest.ini)' adında bir unix ve 'grep' ya da plugin eklenti satırını kaldırmak için. – dinosaurwaltz

+0

Evet, ama sorun testi yürüten diğer kullanıcılar için bunu kolaylaştırmaktır. Dosyadan kaçabilir ve komut satırında her birini tek tek devre dışı bırakabilirim, ancak bu, bir projedeki testleri çalıştırmanın varsayılan yolu olamaz. – eLRuLL

2

için sorduğunuz şeyin biraz tersidir. Eklentiyi yeniden yüklemek için -p pytest_myplugin kullanın. Bu, -p no:myplugin'dan sonra zincirlendiğinde çalışır (komut satırında veya pytest.ini eklentilerinden).

Burada neler oluyor: -p no:plugin, pytest prepends "pytest_" to "plugin"'u belirttiğinizde. Bunun nedeni, myplugin'un aslında pytest_myplugin'dan içe aktarılmasıdır. Ne yazık ki, bu kolaylık eklentinin tam modül adını gerektiren yükleme tarafında yansıtılmamıştır.

İlgili konular