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

时间:2016-12-13 19:40:36

标签: python unit-testing python-unittest python-mock

我刚才有一个关于如何为以下函数编写测试的问题?这是我对所涉及部分的测试,但我不确定如何更改测试以覆盖print语句并再次调用var costByScn = d3.nest() .key(function(d) { return d.scenario_desc }) .key(function(d) { return d.ftprnt }) .key(function(d) { var mth_dt = new Date(d.mth_dt).getTime(); return mth_dt; }) .rollup(function(v) { var z = _.map(v, 'appl_ci_id'); console.log("z is: ", z) var q = _.uniq(z) console.log("q is: ", q) var len = q.filter(function(val, i, arr) { return arr.indexOf(val) === i; }).length; return len; }) .entries(response); 函数。任何帮助将不胜感激!

function to test

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

get_employee_name

1 个答案:

答案 0 :(得分:0)

如果用户没有输入任何内容,我遇到的第一个问题是使用递归。所以我重构了我的代码,如果没有用户输入,使用 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"]