我正在对一部分代码进行单元测试,它要求在返回之前一次提供一个参数。 我想写一个测试,提示应该是什么,但我不确定如何测试提示的每个阶段。 假设提示为: “什么是变量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 ''"
首先,您不能像在示例中那样读取stdout。为了能够从自己的代码中读取stdout,您首先必须确保stdout实际上正在写入您可以读取的流。机制(对于C,因此必须将其移植到Python)在这里解释:C language. Read from stdout
其次,在进行单元测试时,通常采用不同的方法。如果字符串出现,您不会检查stdout(这将在更高的测试级别上完成,如集成测试或系统测试)。相反,在单元测试期间,您会将代码与操作系统的实际交互隔离开来。例如,如果使用
input
,则可以模拟input
函数。见Mock user input()。这种方法的区别在于,您不看stdout,而是检查代码是否真的以正确的方式调用了input
。此外,还可以进行模拟返回simulated
用户输入相关问题 更多 >
编程相关推荐