我正在编写一些 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 留在我的环境测试代码只会在我从它自己的目录中调用我的程序时运行。如果我切换到我的一个测试套件并使用相对 PATH 调用它,那么我就不会无意中触发此功能。
有没有其他人使用过这种约定?
还有哪些避免环境变量名称冲突的其他建议或最佳做法?提供对测试工具功能的“隐藏”访问?
(此外,如果有人想玩 claft,请随意试一试。目前它的代码非常丑陋,几乎不能作为概念证明。但它的功能最少。这也是自学如何使用 Mercurial 和 bitbucket 的好方法。wiki 和问题跟踪是发布有关 claft 的反馈的最佳场所。
最佳答案
既然您已经在进行命令行解析,为什么不直接添加一个--selftest
选项呢?这样您就不必担心任何冲突,并且调用会更容易。
关于python - DOCTEST==argv[0] 作为约定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1281385/