首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为python提示工具包创建单元测试?

如何为python提示工具包创建单元测试?
EN

Stack Overflow用户
提问于 2016-08-16 12:30:33
回答 1查看 893关注 0票数 12

我想要为我的命令行接口使用Python ( prompt-toolkithttps://github.com/jonathanslenders/python-prompt-toolkit)创建单元测试。

  • 如何使用提示工具包模拟用户交互?
  • ,这些单元测试有最佳实践吗?

示例代码:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-20 00:13:07

您可以mock的提示电话。

app_file

代码语言:javascript
复制
from prompt_toolkit import prompt

def word():
    result = prompt('type a word')
    return result

test_app_file

代码语言:javascript
复制
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的提示符,而不是来自app.py的提示,因为您希望从文件中截取调用。

符合docstring module

如果您使用这个库从用户检索某些输入(作为GNU的纯Python ),那么可能90%的用例都需要:func:.prompt函数。

正如method docstring所说:

从用户那里获取输入并返回。这是许多prompt_toolkit功能的包装器,可以替代raw_input。(或.)

遵循项目中的Getting started

代码语言:javascript
复制
>>> 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'>

prompt方法返回字符串类型时,您可以使用mock.return_value来模拟用户与应用程序的集成。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38975025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档