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)等的需要。

我如何组织/创建我的 pytest,这样我就不会不断地重写代码来测试每个目标的共同属性,通过它们的继承?换句话说,如果 Part1 和 Part2 都继承自 Class A,那么它们都具有 Class A 分配的属性。

有什么方法可以使用 Python 的类继承结构来允许我的 pytest 反映与我的对象相同的继承?换句话说,是否可能出现以下情况?

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 回答