微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

DRY Pytest参数化

如何解决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 举报,一经查实,本站将立刻删除。