代码之家  ›  专栏  ›  技术社区  ›  Andrew Walker

在python模块中测试示例代码

  •  1
  • Andrew Walker  · 技术社区  · 14 年前

    我正在编写包含一些示例的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 回复  |  直到 14 年前
        1
  •  3
  •   Mike Graham    14 年前

    大多数时候,我只是使用 unittest 用于测试我的示例和功能测试。它不是单元测试,但我对单元测试模块所做的很多工作都不是。引用Knuth的话,“计算机不介意它的程序是否被用于与它们的名称不匹配的目的。”

        2
  •  3
  •   unwind    14 年前

    你不能这样做吗?

    if __name__ == "__main__":
      run_tests()
    

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