前一篇文章《Python 中如何实现参数化测试?》中,我提到了在 Python 中实现参数化测试的几个库,并留下一个问题:它们是如何做到把一个方法变成多个方法,并且将每个方法与相应的参数绑定起来的呢?我们再提炼一下,原问题等于是:在一个类中,如何使用装饰器把一个类方法变成多个类方法(或者产生类似的效果)?# 带有一个方法的测试类classTestClass:deftest_func(self):pass# 使用装饰器,生成多个类方法classTestClass:deftest_func1(self):passdeftest_func2(self):passdeftest_func3(self):passPython 中装饰器的本质就是移花接木,用一个新的方法来替代被装饰的方法。在实现参数化的过程中,我们介绍过的几个库到底用了什么手段/秘密武器呢?1、ddt 如何实现参数化?先回顾一下上篇文章中 ddt 库的写法:importunittestfromddtimportddt,data,unpack@ddtclassMyTest(unittest.TestCase):@data((3,1),(-1,0),(1.2,1.0))@unpackdeftest(self,first,second):passddt 可提供 4 个装饰器:1 个加在类上的 @ddt,还有 3 个加在类方法上的 @
...
继续阅读
(56)