python unittest运行服务器&客户端并传递raw_input

时间:2013-08-04 11:10:10

标签: python client-server functional-testing

我有一个简单的python socket game,它有服务器和客户端脚本。我使用unittest模块(测试抽象游戏逻辑)提供单元测试,现在我想提供功能测试(测试真正的套接字游戏运行时)。

从python代码,我想首先运行服务器然后运行客户端。这些使用raw_input(py2.7)函数,因此我需要将一些信息传递给这些脚本(使用raw_input从控制台读取每个游戏移动。)

如何在python / unittest中执行此操作?我的意思是 - 如何运行外部脚本并将控制台输入传递给它们 - 来自python代码?

1 个答案:

答案 0 :(得分:1)

你只需要模拟raw_input。使用mock library或只是自己嘲笑 - 可以更简单,例如:

def ri_mock(fle_name='nac_input.txt'):
    with open(fle_name) as fp:
        for ln in fp:
            yield ln

gen = ri_mock()
raw_input = gen.next

但是,由于您要在单元测试中使用它,我宁愿使用字符串而不是从外部文件中读取数据。