python - DOCTEST==argv[0] 作为约定?

标签 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 留在我的环境测试代码只会在我从它自己的目录中调用我的程序时运行。如果我切换到我的一个测试套件并使用相对 PATH 调用它,那么我就不会无意中触发此功能。

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

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

(此外,如果有人想玩 claft,请随意试一试。目前它的代码非常丑陋,几乎不能作为概念证明。但它的功能最少。这也是自学如何使用 Mercurial 和 bitbucket 的好方法。wiki 和问题跟踪是发布有关 claft 的反馈的最佳场所。

最佳答案

既然您已经在进行命令行解析,为什么不直接添加一个--selftest 选项呢?这样您就不必担心任何冲突,并且调用会更容易。

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

相关文章:

python - 在多对多关系中查询

python - 如何在 python 中添加带有 mySQLdb 的列?

python - BeautifulSoup错误AttributeError : 'NoneType' object has no attribute 'getText'

java - 如何在我的代码中对 try catch block 进行 Junit 测试

perl - 在 Perl 中测试查询字符串 unicode 处理

c++ - 大型文本文件查看器如何工作?如何构建大型文本阅读器

asp.net-mvc-3 - 为什么单元测试使用 mstest 命令行失败,但在 VS2010 Professional 中却没有?

c# - 如何复制进程的标准输出(复制,而不是重定向)?

java - BeanCreationException : Error creating bean with name 'flywayInitializer'

c# - 单步执行测试时测试成功;否则不