python - 具有多步用户输入的单元测试
问题描述
我正在对一部分代码进行单元测试,该部分代码在将它们带回来之前一次要求一个参数。我想写一个测试,提示应该是什么,但我不确定如何测试提示的每个阶段。假设提示是:“什么是变量1”--用户输入--“什么是变量2”--用户输入--
然后单元测试将类似于..
with self.subTest(args=args):
result = _run(args)
self.assertRegex(result.stdout,r'(?m)^'what is variable 1?"
但是,当我尝试一次只向“args”提交一个变量时,测试就会挂起。但是当我尝试一次提交所有变量时,代码失败并说"'what is variable 1' not found in ''"
解决方案
首先,您不能像在示例中那样从标准输出中读取。为了能够从您自己的代码中读取标准输出,您首先必须确保标准输出实际上正在写入您可以从中读取的某个流。这里解释了机制(对于 C,所以你必须将它移植到 Python):C 语言。从标准输出读取。
其次,在进行单元测试时,您通常会采用不同的方法。如果出现字符串,您将不会检查标准输出(这将在更高的测试级别上完成,如集成测试或系统测试)。相反,在单元测试期间,您会将代码与与操作系统的实际交互隔离开来。例如,如果您使用input
,那么您可以模拟该input
函数。请参阅模拟用户输入()。您的方法的不同之处在于,您不查看标准输出,而是检查您的代码是否真的input
以正确的方式调用。此外,您还可以使模拟返回simulated
用户输入。
推荐阅读
- javascript - 如何正确导出反应组件
- winapi - 如何在也应在 Windows XP 上运行的应用程序中使用 Windows 7 API
- spring-boot - spring data rest中如何实现基于字段的访问控制?
- python - Python Pandas 数据转换
- amazon-web-services - 如何将配置文件添加到 AWS 应用程序负载均衡器?
- javascript - 定位列表中的所有元素,但单击除外
- android - 如何让 Android 将应用数据存储在用户的 Google 帐户中,以便在新设备上安装时恢复
- python - 不和谐机器人上的 Heroku 的 MyAnimeList api 问题
- css - 部署后背景图像不起作用
- android - 浓缩咖啡,如何滚动到回收站视图的底部和空闲状态