如何使用Python和unittest库测试函数调用

2024-06-16 14:22:30 发布

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

我刚才有个问题,关于你如何为下面的函数编写一个测试?下面是我对所覆盖部分的测试,但我不确定如何更改测试以覆盖print语句并再次调用get_employee_name函数。任何帮助都将不胜感激!在

function to test

以下是我测试覆盖部分的代码:

DATA = {
"employee_name": "Brian Weber",
"minutes": 120,
"task_name": "Surfing",
"notes": "These are my notes.",
"date": "2016-12-25"
}
​
​
class WorkLogTests(unittest.TestCase):
    def test_get_employee_name(self):
        with mock.patch('builtins.input',
            return_value=DATA["employee_name"]):
            assert worklog.get_employee_name() == DATA["employee_name"]

Tags: 函数代码nametaskdatagetemployee语句
1条回答
网友
1楼 · 发布于 2024-06-16 14:22:30

我遇到的第一个问题是如果用户没有输入任何内容,就使用递归。所以我重构了代码,在没有用户输入的情况下使用continue来使用while循环。 下面是新代码和覆盖所有行的测试:

def get_employee_name():
"""Prompt the employee for their name."""
while True:
    employee_name = input("Enter employee name: ")
    if len(employee_name) == 0:
        print("\nYou must enter your name!\n")
        continue
    else:
        return employee_name

def test_get_employee_name(self):
    with mock.patch('builtins.input', side_effect=["", "Brian Weber"],
        return_value=DATA["employee_name"]):
        assert worklog.get_employee_name() == DATA["employee_name"]

相关问题 更多 >