我正在使用python3和cmd模块构建一个交互式shell。我已经用py.测试测试单个函数,如do帴*函数。我想创建更全面的测试,通过模拟用户的输入与shell本身进行实际交互。例如,如何测试以下模拟会话:
bash$ console-app.py
md:> show options
Available Options:
------------------
HOST The IP address or hostname of the machine to interact with
PORT The TCP port number of the server on the HOST
md:> set HOST localhost
HOST => 'localhost'
md:> set PORT 2222
PORT => '2222'
md:>
使用pythonmock库模拟用户输入。在这里,您将发现与示例1,2类似的问题。在
您可以
mock
input
或传递给cmd的输入流来注入用户输入,但是我发现通过onecmd()
Cmd
API方法和信任Cmd
读取输入的方式来测试它。这样,您就不必关心Cmd
如何直接通过users命令执行脏工作和测试:我通过控制台和socket使用cmd
,而这我不关心流来自何处。在此外,我使用})方法,使我的测试与代码的耦合程度降低。在
onecmd()
来测试偶数do_*
(偶尔{下面是我如何使用它的一个简单示例。
create()
和_last_write()
是分别构建MyCLI
实例和获取最后输出行的帮助方法。在注意,},否则返回{}。在
onecmd()
如果cli应该终止,False
则返回{相关问题 更多 >
编程相关推荐