繁体   English   中英

如何使用 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"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM