测试python包bin脚本的最佳实践

时间:2013-07-18 20:02:22

标签: python testing

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中吗?

1 个答案:

答案 0 :(得分:1)

我不相信有关于tests放在哪里的“最佳做法”。看看有多少不同的意见:Where do the Python unit tests go?

我个人在testsbin目录附近的顶层只有一个mypackage目录,例如,django

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

  • 子流程(如您所述),但使用check_output

    import subprocess
    output = subprocess.check_output("cat /etc/services", shell=True)
    
  • scripttest module

    • 旨在test command-line scripts - 看起来像工作的工具
    • 另见article
  • cli并且它是cli.test模块(以前从未使用过)

希望有所帮助。