DRY Pytest参数化

问题描述

我正在寻找一种为我的测试实现自定义参数化逻辑的方法。我的代码倾向于使用多态设计,因此这似乎是在单个测试中测试所有多态方法的最明智的方法。我目前如何装饰测试的模拟示例:

@mark.parametrize(
    ("cls","input","expected"),[
        (ClsA,True),(ClsA,1,False),(ClsB,)

在测试中,我将在实例化输入并期望预期后在每个类实例调用方法。似乎(尤其是在使用较大的参数设置的情况下),对于使用它的所有参数设置一次“设置” ClsA,对于使用它的所有参数设置一次“设置” ClsB更有意义。如果您只有一个cls arg,则您可以做到:

@mark.parameterize(
    "cls",[ClsA],)
@mark.parameterize(
    ("input","output"),[
         (0,(1,]
)

但是,您不能将此语法与多个cls参数一起使用,因为它会创建不同装饰器的乘积,缺少一种方法来在一个装饰器中分配某些参数,而只能与另一个装饰器中的某些参数一起使用。有什么方法可以做我想要达到的目标吗?否则,我必须反复写出感觉很湿的相同论点。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)