我正在编写包含一些示例的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#不同
答案 0 :(得分:3)
你不能这样做:
if __name__ == "__main__":
run_tests()
在模块代码中?这样,它只会在模块作为独立的程序进行调用时运行,而不是在import
编入其他代码时运行。
答案 1 :(得分:3)
大多数情况下,我只使用unittest
来测试我的示例和功能测试。它不是单元测试,但我使用unittest模块的很多东西都没有。引用Knuth的话,“计算机并不介意它的程序是否用于与其名称不相符的目的。”