3

私は Pytest を使用して、Python モデルを介してハードウェアをテストしています。

私の現在の conftest セットアップでは、私が気に入っている funcargs を介して Python モデルをインスタンス化することができます。

def test_part1(target):
    ...

def test_part2(target):
    ...

私のモデルには、深く、しかし単純な単一継承構造があります。

class A():
    def __init__:
        self.attributes_added_by_class_A
        ...

class B(A):
    def __init__:
        super().__init__()
        self.attributes_added_by_class_B
        ...

私のpytestsは現在次のようになっています:

def test_part1(target):
    call_test_for_attributes_set_by_class_A(target)
    call_test_for_attributes_set_by_class_B(target)
    call_tests_specific_to_part1(target)

def test_part2(target):
    call_test_for_attributes_set_by_class_A(target)
    call_test_for_attributes_set_by_class_B(target)
    call_tests_specific_to_part2(target)

...

call_test_for_attributes_set_by_class_A(target)などを繰り返す必要は避けたいと思います。

継承を介して各ターゲットに共通の属性をテストするためにコードを常に書き直さないように、pytests を整理/作成するにはどうすればよいですか? つまり、Part1 と Part2 の両方がクラス A から継承する場合、両方ともクラス A によって割り当てられた属性を持ちます。

Python のクラス継承構造を使用して、pytests がオブジェクトと同じ継承を反映できるようにする方法はありますか? つまり、次のようなことが可能なのでしょうか。

class PytestA():
    def test_attributes_set_by_class_A()

class PytestB(PytestA):
    def test_attributes_set_by_class_B()

test_all = PytestB(target)

pytest クラスで現在許可されている (?)ように、上記がtarget引数を受け取る方法を理解しようとして立ち往生しています。__init__()

私はPython3を使用しています

4

1 に答える 1

2

別のフィクスチャに依存するフィクスチャが必要だと思います。モジュール性: フィクスチャ関数からのフィクスチャの使用 を参照してください。targetおそらく、一般的なフィクスチャ、次にtargetAフィクスチャ、フィクスチャが必要になるでしょうtargetB。私はあなたのテストがどのように機能しているかを完全には理解していないので、あなたが書いたものに基づいた例を挙げるのをためらっています.

于 2015-02-27T23:50:47.217 に答える