测试交互式python程序

L.o*_*o.c 10 python testing

我想知道python的哪些测试工具支持交互式程序的测试.例如,我有一个应用程序启动:

$ python dummy_program.py 

>> Hi whats your name? Joseph
Run Code Online (Sandbox Code Playgroud)

我想要工具,Joseph所以我可以模仿这种互动行为.

Rap*_*ien 1

你最好的选择可能是依赖注入,这样你通常从 sys.stdin (例如)中获取的实际上是传入的对象。所以你可以这样做:

import sys

def myapp(stdin, stdout):
    print >> stdout, "Hi, what's your name?"
    name = stdin.readline()
    print >> stdout "Hi,", name

# This might be in a separate test module
def test_myapp():
    mock_stdin = [create mock object that has .readline() method]
    mock_stdout = [create mock object that has .write() method]
    myapp(mock_stdin, mock_stdout)

if __name__ == '__main__':
    myapp(sys.stdin, sys.stdout)
Run Code Online (Sandbox Code Playgroud)

幸运的是,Python 使这变得非常简单。以下是模拟标准输入示例的更详细链接:http://konryd.blogspot.com/2010/05/mockity-mock-mock-some-love-for-mock.html