【问题标题】:DOCTEST==argv[0] as a convention?DOCTEST==argv[0] 作为约定?
【发布时间】:2009-08-15 07:25:54
【问题描述】:

我正在编写一些 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 的反馈的最佳场所。

【问题讨论】:

    标签: python unit-testing testing doctest


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2014-09-22
        • 1970-01-01
        • 1970-01-01
        • 2011-01-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多