我正在编写一些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留在在我的环境中,只有当我从自己的目录中调用程序时,测试代码才会运行。如果我切换到一个测试套件并使用相对路径调用它,那么可以避免无意中触发该功能。

还有其他人使用过这种约定吗?

还有什么其他建议或最佳实践来避免环境变量名称之间的冲突?是否提供对测试工具功能的“隐藏”访问?

(此外,如果有人想玩claft,请随意旋转。目前这是非常丑陋的代码,仅是概念上的证明。但它的功能极小。这也是自学的好方法使用Mercurial和bitbucket。Wiki和问题跟踪是发布有关claft反馈的最佳位置。

最佳答案

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

关于python - DOCTEST == argv [0]作为约定?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1281385/

10-11 17:24