Bagaimana cara membuat pytest mengabaikan kelas bernama TestSomething? [duplikat]
Saya sedang mengerjakan semacam kerangka pengujian yang kebetulan memiliki kelas bernama TestSomething
tentu saja. Dan saya menyadari pengujian saya gagal karena pytest melihat kelas-kelas ini sebagai "sesuatu yang perlu saya buat dan jalankan!", Segera setelah diimpor. Dan ini sama sekali tidak akan berhasil.
import pytest
from package import TestSomethingClass
Apakah mungkin untuk mengimpor kelas tersebut dari file tes pytest secara langsung? Atau haruskah saya secara tidak langsung menggunakannya melalui fixture?
Masalah yang sama berlaku untuk pengecualian, karena saya perlu melakukan sesuatu seperti
with pytest.raises(TestsSomethingError):
Jawaban
Nonaktifkan Secara Eksplisit
Anda dapat mengizinkan pytest untuk mengabaikan kelas khusus ini berdasarkan itu dimulai dengan kata Test
, dengan mengatur __test__
bendera ke False
dalam kelas Anda yang bentrok
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
fitur: https://github.com/pytest-dev/pytest/pull/1561
File Konfigurasi
Kami juga dapat mengubah konvensi sepenuhnya di pytest.ini
file Anda dan mengabaikan semua nama kelas yang memulai kata tersebut Example
. Tetapi saya tidak menyarankan ini, karena kita berpotensi menghadapi konsekuensi yang tidak diinginkan di jalan.
#pytest.ini file
[pytest]
python_classes = !Example
Konvensi Pytest
menguji fungsi atau metode pengujian yang diawali di luar kelas
menguji fungsi atau metode pengujian yang diawali dengan pengujian di dalam kelas pengujian yang diawali dengan pengujian (tanpa metode init )
Sumber: https://docs.pytest.org/en/stable/customize.html