Pytest'in TestSomething adlı bir sınıfı yok sayması nasıl sağlanır? [çiftleme]

Aug 16 2020

TestSomethingElbette adlandırılmış sınıflara sahip bir tür test çerçevesi üzerinde çalışıyorum . Ve testlerimin başarısız olduğunu fark ettim çünkü pytest bu sınıfları içe aktarılır aktarılmaz "başlatmam ve çalıştırmam gereken bir şey!" Olarak görüyor. Ve bu kesinlikle işe yaramayacak.

import pytest
from package import TestSomethingClass

Böyle bir sınıfı doğrudan bir pytest test dosyasından içe aktarmak mümkün müdür? Yoksa bunları bir fikstür aracılığıyla dolaylı olarak mı kullanmalıyım?

Aynı sorun istisnalar için de geçerlidir, çünkü benzer bir şey yapmam gerekecek

with pytest.raises(TestsSomethingError):

Yanıtlar

4 DavidJ Aug 16 2020 at 03:59

Açıkça Devre Dışı Bırak

Pytest'in bu belirli sınıfı, kelimeden başlayarak Test, __test__bayrağı Falseçatışan sınıfınızın içine ayarlayarak yok saymasına izin verebilirsiniz.

class TestSomethingClass(object):
    __test__ = False

    def test_class_something(self, object):
        pass

özellik: https://github.com/pytest-dev/pytest/pull/1561


Yapılandırma Dosyası

Ayrıca pytest.inidosyanızdaki kuralı tamamen değiştirebilir ve sözcüğü başlatan tüm sınıf adlarını yok sayabiliriz Example. Ancak, potansiyel olarak yolun sonunda istenmeyen sonuçlarla karşılaşabileceğimiz için bunu tavsiye etmiyorum.

#pytest.ini file
[pytest]
python_classes = !Example

Pytest Kuralları

  • önekli test işlevlerini veya sınıfın dışındaki yöntemleri test edin

  • Önekli test işlevlerini veya yöntemlerini test edin Önekli test sınıflarını test edin ( başlatma yöntemi olmadan )

Kaynak: https://docs.pytest.org/en/stable/customize.html