Python单元测试捕获打印输出

-1 投票
1 回答
49 浏览
提问于 2025-04-14 17:53

我想要一些帮助,写一个单元测试来测试打印输出。以下是我的代码:

import random

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

Friend=random.choice(friends_list)

print(friend)

我该怎么测试才能确保打印出了“Friend”?

到目前为止,我尝试了:

def test_friends():
friends.

之后我该怎么做不太清楚。

1 个回答

1

你可以使用 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

撰写回答