DOCTEST == argv [0]作为惯例?

时间:2009-08-15 07:25:54

标签: python unit-testing testing doctest

在我正在编写的一些Python中(命令行和过滤器测试工具: claft )我想要一种简单的方法来调用内置的测试套件( doctest )我决定了以下内容:

if 'DOCTEST' in os.environ and os.environ['DOCTEST']==sys.argv[0]:
    _runDocTests()
    sys.exit()

因此,如果为某些其他程序设置DOCTEST变量,我将忽略它。事实上,我对此的测试只是:DOCTEST =。/ claft ./claft或者如果我想要详细,我可以使用:DOCTEST =。/ claft VERBOSE = 1 ./claft所以即使我留下DOCTEST =。/ claft in我的环境测试代码只有在我从自己的目录中调用我的程序时才会运行。如果我切换到我的一个测试套件并使用相对PATH调用它,那么我可以安全地无意中触发此功能。

还有其他人使用过这种惯例吗?

有哪些其他建议或最佳做法可以避免环境变量名称之间的冲突?用于提供对测试工具功能的“隐藏”访问?

(另外,如果有人想玩 claft ,请随意给它一个旋转。现在它的代码非常丑陋,几乎不是概念证明。但它的功能极少。这也是教我自己如何使用Mercurial和bitbucket的好方法。维基和问题跟踪是发布 claft 的反馈的最佳地点。

2 个答案:

答案 0 :(得分:3)

由于您已经在进行命令行解析,为什么不添加--selftest选项呢?您不必担心任何冲突,并且调用将更容易。

答案 1 :(得分:0)

另一种避免命名空间与环境冲突的 hackish 方法:查找myprogname_DEBUG等。