Python单元测试几乎从不检查类型

时间:2010-10-15 15:43:15

标签: java python unit-testing

我正在使用JUnit进行一些用Java编写的测试,但我无法注意到检查对象“类型”的重点。这是我在Python测试套件中从未见过的。

Java是静态类型的,Python是动态类型的,不应该反过来这样吗?

3 个答案:

答案 0 :(得分:15)

在动态类型语言中,开发人员经常遵循duck typing principle - “如果它看起来像鸭子,像鸭子一样走路,它就像一只鸭子”。只要对象完成了所有测试所需的操作,它究竟是什么类型的对象真的很重要吗?鸭子打字说没有。

答案 1 :(得分:5)

Python单元测试执行检查类型。每时每刻。事实上,这是他们正在做的唯一的事情。

Python是鸭子型的。鸭子打字意味着对象的类型由其行为定义。单元测试测试行为。他们,他们测试类型。

答案 2 :(得分:0)

除了在此处附上每个人对鸭子打字的看法之外,我还想指出types模块的方向:

http://docs.python.org/library/types.html

...其类型集合对应于许多内置函数和其他常用类型,因此您可以在单元测试中轻松地明确断言您想要的任何类型。