涓滴单位测试

时间:2010-07-20 21:30:49

标签: python c unit-testing

如果我在C中编写一个包含Python接口的库,那么在Python接口中编写函数的单元测试是否可以?假设Python接口完整,它应该意味着C代码可以工作。

大多数情况下,我很懒,因为Python单元测试的东西几乎不需要使用。

感谢, -nick

4 个答案:

答案 0 :(得分:5)

通过Python界面进行测试对于您的库来说将是非常有价值的验收测试。但它们不会进行单元测试。

单元测试由相同的编码人员以相同的语言编写,与他们测试的单位在同一平台上编写。这些也应该写出来!

你是对的,不过,Python中的单元测试比C ++(甚至是C,你说的那样简单!)要容易得多。

答案 1 :(得分:1)

如果你只关心Python库是否有效,那么测试一下。这将为您提供重要的确认,即C库是健壮的,但是“如果您没有测试它,它不起作用”的格言仍然主要适用,并且我不会在没有测试工具的情况下导出库。

理论上,你可以测试处理器微码是否正常工作,但通常不会。

答案 2 :(得分:0)

理想情况下,你要为每个人编写单元测试。

你的Python库调用可能(希望?)与你的C库调用没有一对一的对应关系,因为那不是一个非常Pythonic的接口,所以如果你只对你的Python接口进行单元测试,将会有未经测试的C库调用的变体和序列。

答案 3 :(得分:0)

我看到两个主要限制通过Python接口进行单元测试。是否可以使用这些限制进行测试取决于库的功能,实现方式以及C接口上Python接口的对齐方式。

  • 该库只能以Python库使用它的方式运行。只要Python接口是C库的唯一客户端,这就不是问题。
  • Python单元测试无法访问C库的内部,因为用C编写的单元测试会有:只有通过Python接口公开的内容才可以访问。因此
    • 如果在10次调用Python接口后出现问题,则需要10次调用来重现它,而用C编写的单元测试可以直接创建夹具,而不需要10次调用。这可能会使Python测试变慢。
    • Python单元测试不能像C单元测试一样孤立,因为它们可能无法重置库的内部