【发布时间】:2015-12-16 16:44:07
【问题描述】:
我正在实现以下类:
class TestInitializeConnection(TestMyDriver)
超类(TestMyDriver)是一个TestCase,意思是:
class TestMyDriver(test.TestCase):
超类有一个名为 driver 的属性,它基本上是测试驱动程序的模拟,它声明如下:
self.driver = mocks.MyDriver()
现在在我的 (TestInitializeConnection) 中,我想实现以下测试:
def test_initialize_connection(self):
self.driver.initialize_connection(self.volume, self.connector)
在函数initialize_connection的代码中,有一个私有方法被调用
specs = self._get_specs(volume)
我想让我的测试告诉 _get_specs(volume) 的这个调用返回一个特定的值,例如一个具有以下值的字典: {'iops': 100, '带宽': 200}
最好的方法是什么?
谢谢, 马坦
【问题讨论】:
-
您可以遵循@Dan 的建议,但是...我的规则是避免模拟私有方法。
_get_spec()做什么?有没有办法通过嘲笑一些合作者来获得相同的结果?是否可以进行安全的重构来帮助进行此类测试?更多地使用模拟私有方法和属性,并且您的代码更多地与测试纠缠在一起 -> 重构变得非常困难,并且您正在失去更改代码的能力,而这是测试给您带来的最大优势。
标签: python unit-testing python-unittest python-mock