【发布时间】:2013-08-04 11:10:09
【问题描述】:
我有一个简单的python socket game,它有服务器和客户端脚本。我已经使用 unittest 模块提供了单元测试(测试抽象游戏逻辑),现在我想提供功能测试(测试真正的套接字游戏运行时)。
从 python 代码中,我想先运行服务器,然后再运行客户端。这些使用raw_input (py2.7) 函数,因此我需要将一些信息传递给这些脚本(每个游戏动作都使用raw_input 从控制台读取)。
如何在 python/unittest 中做到这一点?我的意思是 - 我如何运行外部脚本并将控制台输入传递给它们 - 从 python 代码?
【问题讨论】:
-
将
raw_input移出核心功能。它应该只存在于与用户交互的代码中。 -
@Blender 它不在核心功能中。核心是game.py,它是纯逻辑。服务器和客户端(两个玩家)使用 raw_input。我的问题是 - 如何从功能测试级别传递一些输入?
-
你可能会一起破解一些东西,但这不是一个好方法。
Game.move使用raw_input。 -
嗯,不,因为这个文件 (github.com/tkoomzaaskz/noughts-and-crosses/blob/master/nac/…) 包含逻辑并且已经过单元测试。我想测试客户端-服务器通信。它们都是使用 raw_input 的控制台应用程序。我已经在这里解决了这个问题(使用鼻子测试、子进程和管道来提供 raw_input):github.com/tkoomzaaskz/noughts-and-crosses/blob/master/test/….
-
就像我说的,这是一个 hack。如果您的应用程序结构正确,则无需在单元测试中调用脚本。
标签: python client-server functional-testing