Python单元测试检查while循环后的列表stdout

2024-09-29 08:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着用词正确地回答这个问题,但是我要做的是在while语句之后检查一个列表的stdout。我模拟用户输入进行两次迭代,并在第三次迭代期间中断。在

这是我的运行代码。在

def main():

    pirateList = []
    maxLengthList = 6

    while len(pirateList) < maxLengthList:
        item = input("Argh! Enter the item: ")

        if item == "exit":
            break;
        else:
            pirateList.append(item)
            print(pirateList)


    print(pirateList)


main()

这是我的测试代码,我应该期待[bow, arrow]

^{pr2}$

当我运行这个程序的时候起来。不错误或轨迹


Tags: 代码用户列表inputlenmaindefstdout
1条回答
网友
1楼 · 发布于 2024-09-29 08:28:28

您的导入语句

 from RunFile import main

实际运行main函数,正如它应该的那样,并请求输入。你应该有标准的if条款:

^{pr2}$

您可能还想更改stdout处理,下面是一个示例:

class GetInputTest(unittest.TestCase):

  @patch('builtins.input', side_effect=["bow", "arrow","exit"])
  @patch('sys.stdout', new_callable=StringIO)
  def run_test_with_stdout_capture(self , mock_output, mock_input ):
      main()
      return mock_output.getvalue()

  def test( self ):
      print ("GOT: + " + self.run_test_with_stdout_capture())


if __name__ == "__main__":
   unittest.main()

请注意,您不能在@补丁内打印系统标准输出它会被抓住的!在

相关问题 更多 >