如何为python prompt toolkit创建单元测试?

如何为python prompt toolkit创建单元测试?,python,python-3.x,Python,Python 3.x,我想为我的命令行界面创建单元测试 使用Pythonprompt工具包构建 如何模拟用户与prompt toolkit的交互? 这些单元测试有最佳实践吗? 示例代码: from os import path from prompt_toolkit import prompt def csv(): csv_path = prompt('\nselect csv> ') full_path = path.abspath(csv_path) return full_p

我想为我的命令行界面创建单元测试 使用Python
prompt工具包构建

  • 如何模拟用户与prompt toolkit的交互?
  • 这些单元测试有最佳实践吗?
示例代码:

from os import path
from prompt_toolkit import prompt

def csv():
    csv_path = prompt('\nselect csv> ')
    full_path = path.abspath(csv_path)
    return full_path
你可以在电话提示时使用

应用程序文件

from prompt_toolkit import prompt

def word():
    result = prompt('type a word')
    return result
import unittest
from app import word
from mock import patch

class TestAnswer(unittest.TestCase):
    def test_yes(self):
        with patch('app.prompt', return_value='Python') as prompt:
            self.assertEqual(word(), 'Python')
            prompt.assert_called_once_with('type a word')

if __name__ == '__main__':
    unittest.main()
测试应用程序文件

from prompt_toolkit import prompt

def word():
    result = prompt('type a word')
    return result
import unittest
from app import word
from mock import patch

class TestAnswer(unittest.TestCase):
    def test_yes(self):
        with patch('app.prompt', return_value='Python') as prompt:
            self.assertEqual(word(), 'Python')
            prompt.assert_called_once_with('type a word')

if __name__ == '__main__':
    unittest.main()
请注意,您应该模拟来自app.py的提示,而不是来自prompt\u toolkit的提示,因为您希望拦截来自该文件的调用

根据:

如果您使用此库从用户检索某些输入(作为 纯Python替代GNU readline),可能用于90%的用例, :func:
.prompt
函数就是您所需要的全部功能

正如上面所说:

从用户处获取输入并返回。 这是一个围绕大量
prompt\u工具包
功能的包装,可以替代
raw\u输入
。(或GNU读线。)

以下是该项目:

>>> from prompt_toolkit import prompt
>>> answer = prompt('Give me some input: ')
Give me some input: Hello World
>>> print(answer)
'Hello World'
>>> type(answer)
<class 'str'>
>>来自提示符\u工具箱导入提示符
>>>answer=prompt('给我一些输入:')
给我一些建议:你好,世界
>>>打印(答案)
“你好,世界”
>>>类型(答案)
prompt
方法返回字符串类型时,您可以使用
mock.return\u value
模拟用户与应用程序的集成