Python 单元测试捕获打印输出

问题描述 投票:0回答:1

我需要一些帮助来编写一个测试打印输出的单元测试。这是我的代码:

import random

friends_list = ["Monica","Joey", "Pheobe", "Chandler", "Rachel", "Ross"]

Friend=random.choice(friends_list)

print(friend)

我如何测试以确保打印出“Friend”?

到目前为止我尝试过:

def test_friends():
friends.

不知道之后该做什么

python unit-testing python-unittest
1个回答
0
投票

您可以使用

unittest
模块编写单元测试以确保打印朋友的名字。

import unittest
from io import StringIO
import sys
import random

def get_print_output():
    captured_output = StringIO()
    sys.stdout = captured_output
    friends_list = ["Monica", "Joey", "Pheobe", "Chandler", "Rachel", "Ross"]
    Friend = random.choice(friends_list)
    print(Friend)
    sys.stdout = sys.__stdout__
    return captured_output.getvalue().strip()

# Your test class
class TestPrintFriend(unittest.TestCase):

    # Test method to check if the printed name is in the list of friends
    def test_printed_friend(self):
        printed_output = get_print_output()
        friends_list = ["Monica", "Joey", "Pheobe", "Chandler", "Rachel", "Ross"]
        self.assertIn(printed_output, friends_list)

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

输出:

.
----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
© www.soinside.com 2019 - 2024. All rights reserved.