2017-06-07 8 views
0

私はpytestの初心者です。私は、サブクラスで書かれたいくつかのテストメソッドをテストしたいというシナリオを持っています。Python - サブクラスで書かれたテストメソッドをテストするためにpytestを使用

以下は、次のコマンド

py.test -s -v test_filename.py 

を実行したら、私のコードの構造

class Superclass: 
    def __init__(self, a): 
     self.a = a 
    def dummy_print(): 
     print("This is a dummy function") 

class TestSubClass(Superclass): 

def test_1_eq_1(): 
    assert 1 == 1 

であると仮定し、私は次のようなエラーmessgaeを取得:

は、「テストクラスを収集することはできませんTest_Super 'の初期のコンストラクタ

pytestのドキュメントでも同じことが言及されています。

回避策はありますか?

すべてのテストファイルはスーパークラスから継承する必要があるため、スーパークラス '__init__()メソッドが必要です。

+0

私は簡単な回避策があるとは思いません。 \\ \ init \ _ \ _でデータ用に1つ、テスト用に2つにクラス階層を分割します。 – phd

答えて

-1

Pytestは、unittestsとは異なる獣です。それは警告メッセージで見ることができるprohibitsクラス階層です。

あなたには、いくつかの事前の初期化の手順が必要な場合は、それらがfixturesを使用してください:

@pytest.fixture(autouse=True) 
def pre_run_initialization(): 
    # do before test 
    yield 
    # do after test 
+0

継承は[リンクされたドキュメント]ページ(https://docs.pytest.org/en/latest/goodpractices.html)には記載されていません。私は[確認できませんでした](https://stackoverflow.com/questions/46040478/how-to-test-a-class-inherited-methods-in-pytest/46061409#comment79117702_46061409)クラスの継承は禁止されています。実際には、スーパークラスを継承するクラスに適用されたマーカーは、意図せずに他のすべてのサブクラスにマーカーを適用します。 – theY4Kman

関連する問題