11
myproject/
    bin/
        myscript
    mypackage/
        __init__.py
        core.py
        tests/
            __init__.py
            test_mypackage.py
    setup.py

测试脚本 myscript 的最佳方法是什么?

从 SO 研究看来,我发现的唯一答案是在名为 test_myscript 的测试中编写一个测试并使用类似的东西

import subprocess

process = subprocess.Popen('myscript arg1 arg2')
print process.communicate()

在我的测试用例中运行脚本然后测试结果。有没有更好的办法?或者对不同方式的任何其他建议?我应该将测试套件放在 bin/tests 还是 mypackage/tests 中?

4

1 回答 1

1

我不相信有任何关于放置位置的“最佳实践” tests。看看有多少不同的意见:Python 单元测试在哪里?

我个人tests在顶层有一个也是唯一的目录,靠近你的binandmypackage目录 - 例如,django就有。

要运行bin脚本并获得结果,您可以使用:

  • 子流程(正如您所提到的),但使用check_output

    import subprocess
    output = subprocess.check_output("cat /etc/services", shell=True)
    
  • 脚本测试模块

    • 旨在test command-line scripts- 看起来像工作的工具
    • 另见这篇文章
  • cli和它的cli.test模块(个人从未使用过)

希望有帮助。

于 2013-07-18T21:11:18.587 回答