Bagaimana cara membuat pytest mengabaikan kelas bernama TestSomething? [duplikat]

Aug 16 2020

Saya sedang mengerjakan semacam kerangka pengujian yang kebetulan memiliki kelas bernama TestSomethingtentu 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

4 DavidJ Aug 16 2020 at 03:59

Nonaktifkan Secara Eksplisit

Anda dapat mengizinkan pytest untuk mengabaikan kelas khusus ini berdasarkan itu dimulai dengan kata Test, dengan mengatur __test__bendera ke Falsedalam 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.inifile 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