Python单元测试捕获打印输出
我想要一些帮助,写一个单元测试来测试打印输出。以下是我的代码:
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