pytestにTestSomethingという名前のクラスを無視させる方法は?[複製]
TestSomething
もちろん、たまたま名前の付いたクラスがある一種のテストフレームワークに取り組んでいます。そして、pytestはこれらのクラスをインポートするとすぐに「インスタンス化して実行する必要があるもの」と見なすため、テストが失敗していることに気付きました。そして、これは絶対に機能しません。
import pytest
from package import TestSomethingClass
そのようなクラスをpytestテストファイルから直接インポートすることは可能ですか?それとも、フィクスチャを介して間接的にそれらを使用する必要がありますか?
同じ問題が例外にも当てはまります。次のようなことをする必要があるからです。
with pytest.raises(TestsSomethingError):
回答
4 DavidJ
明示的に無効にする
競合するクラス内にフラグをTest
設定することにより、単語で始まるこの特定のクラスをpytestが無視できるようにすることができます。__test__
False
class TestSomethingClass(object):
__test__ = False
def test_class_something(self, object):
pass
特徴: https://github.com/pytest-dev/pytest/pull/1561
構成ファイル
また、pytest.ini
ファイル内の規則を完全に変更し、単語で始まるすべてのクラス名を無視することもできますExample
。しかし、将来的に意図しない結果に遭遇する可能性があるため、これについてはお勧めしません。
#pytest.ini file
[pytest]
python_classes = !Example
Pytestコンベンション
クラス外の接頭辞付きテスト関数またはメソッドをテストする
テストプレフィックス付きテスト関数またはテストプレフィックス付きテストクラス内のメソッド(initメソッドなし)
ソース: https://docs.pytest.org/en/stable/customize.html