多步用户输入的单元测试

2024-06-01 02:29:14 发布

您现在位置: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 ''"


Tags: run代码用户self参数iswithargs
1条回答
网友
1楼 · 发布于 2024-06-01 02:29:14

首先,您不能像在示例中那样读取stdout。为了能够从自己的代码中读取stdout,您首先必须确保stdout实际上正在写入您可以读取的流。机制(对于C,因此必须将其移植到Python)在这里解释:C language. Read from stdout

其次,在进行单元测试时,通常采用不同的方法。如果字符串出现,您不会检查stdout(这将在更高的测试级别上完成,如集成测试或系统测试)。相反,在单元测试期间,您会将代码与操作系统的实际交互隔离开来。例如,如果使用input,则可以模拟input函数。见Mock user input()。这种方法的区别在于,您不看stdout,而是检查代码是否真的以正确的方式调用了input。此外,还可以进行模拟返回simulated用户输入

相关问题 更多 >