我正在对代码的一部分进行单元测试,该代码在将它们带回之前一次要求一个参数。 我想写一个测试,说明提示应该是它应该是什么,但我不确定如何测试提示的每个阶段。 假设提示是: "什么是变速档 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语言。从标准输出读取。
其次,在进行单元测试时,通常会采用不同的方法。 如果字符串出现,您不会检查 stdout(这将在更高的测试级别(如集成测试或系统测试(上完成(。 相反,在单元测试期间,您将代码与与操作系统的实际交互隔离开来。 例如,如果使用input
,则可以模拟input
函数。 请参阅模拟用户输入((。 与你的方法的不同之处在于,你不看stdout,而是检查你的代码是否真的以正确的方式调用了input
。 此外,您还可以使模拟返回simulated
用户输入。