如何使用 Python 和 unittest 库测试函数调用
How to test a function call using Python and unittest library
我只是想问一下您是如何为以下函数编写测试的?这是我对所涵盖部分的测试,但我不确定如何更改测试以覆盖打印语句并再次调用 get_employee_name
函数。如有任何帮助,我们将不胜感激!
这是我测试覆盖部分的代码:
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"]
我遇到的第一个问题是在用户未输入任何内容时使用递归。因此,如果没有用户输入,我重构我的代码以使用 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"]
我只是想问一下您是如何为以下函数编写测试的?这是我对所涵盖部分的测试,但我不确定如何更改测试以覆盖打印语句并再次调用 get_employee_name
函数。如有任何帮助,我们将不胜感激!
这是我测试覆盖部分的代码:
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"]
我遇到的第一个问题是在用户未输入任何内容时使用递归。因此,如果没有用户输入,我重构我的代码以使用 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"]