在python模块中测试示例代码

时间:2010-05-07 13:38:02

标签: python unit-testing testing

我正在编写包含一些示例的python模块。这些样本不是单元测试,并且它们太长且太复杂而无法进行测试。我对自动检查这些样本运行的最佳实践感兴趣。

我当前的项目布局非常标准,除了有一个额外的顶级makefile,它有build,install,unittest,coverage和profile目标,根据需要将责任委派给setup.py和nose。

projectname/
    Makefile
    README
    setup.py
    samples/
        foo-sample
        foobar-sample
    projectname/
        __init__.py
        foo.py
        bar.py
    tests/
        test-foo.py
        test-bar.py

我考虑过添加一个sampletest模块,或者将nose.tools.istest装饰器添加到样本的入口点函数中,但对于少量样本,这些解决方案听起来有点难看。

这个问题与Automatically Unit Test Example Code类似,但我认为python最佳实践与C#不同

2 个答案:

答案 0 :(得分:3)

你不能这样做:

if __name__ == "__main__":
  run_tests()

在模块代码中?这样,它只会在模块作为独立的程序进行调用时运行,而不是在import编入其他代码时运行。

答案 1 :(得分:3)

大多数情况下,我只使用unittest来测试我的示例和功能测试。它不是单元测试,但我使用unittest模块的很多东西都没有。引用Knuth的话,“计算机并不介意它的程序是否用于与其名称不相符的目的。”