Python 尽管满足要求,但单元测试失败
Python unit test fails despite meeting requirement
我正在参加一个在线 python 课程,需要我完成一些练习才能进步。这门课程的组织者说,他们有用户必须满足的可见和隐藏的要求,才能通过每项测试。本例probelem语句如下:
Write a function called manipulate_data which will act as follows:
When given a list of integers, return a list, where the first element is the count of positives numbers and the second element is the sum of negative numbers.
NB: Treat 0 as positive.
我想到了这个,我相信它通过了可见的要求,除了单元测试用例的 第 6 行
def manipulate_data(listinput):
report = [0,0]
if type(listinput) != list:
#I may need some work here.. see unit test line 6
assert "invalid argument"
for digit in listinput:
#is an even number so we increment it by 1
if digit >= 0 and type(digit) == int:
report[0] += 1
#number is less than zero, adds it sum
elif digit < 0 and type(digit) == int:
report[1] += digit
return report
每次我 运行 代码时,我总是收到此错误消息,表明我的代码通过了三个测试中的两个,我假设是 test_only_list_allowed(self)
我对这种事情,我需要帮助。
测试表明代码预期字符串为 returned。 assert
引发 AssertionError
异常。您想要 return 与 assertEquals()
测试正在寻找的字符串相同,因此 'Only lists allowed'
,而不是 msg
参数(当测试 失败).
而不是使用 assert
使用 return
和 return 预期的字符串:
if type(listinput) != list:
return "Only lists allowed"
请注意,通常您会使用 isinstance()
来测试类型:
if not isinstance(listinput, list):
return "Only lists allowed"
for digit in listinput:
if not isinstance(digit, int):
continue
if digit >= 0:
report[0] += 1
elif digit < 0:
report[1] += digit
我对整数使用了单一测试,而不是在每个分支中进行测试。你甚至可以有一个不支持与 0
比较的类型,所以你想先把那个测试排除在外。
我正在参加一个在线 python 课程,需要我完成一些练习才能进步。这门课程的组织者说,他们有用户必须满足的可见和隐藏的要求,才能通过每项测试。本例probelem语句如下:
Write a function called manipulate_data which will act as follows: When given a list of integers, return a list, where the first element is the count of positives numbers and the second element is the sum of negative numbers. NB: Treat 0 as positive.
我想到了这个,我相信它通过了可见的要求,除了单元测试用例的 第 6 行
def manipulate_data(listinput):
report = [0,0]
if type(listinput) != list:
#I may need some work here.. see unit test line 6
assert "invalid argument"
for digit in listinput:
#is an even number so we increment it by 1
if digit >= 0 and type(digit) == int:
report[0] += 1
#number is less than zero, adds it sum
elif digit < 0 and type(digit) == int:
report[1] += digit
return report
每次我 运行 代码时,我总是收到此错误消息,表明我的代码通过了三个测试中的两个,我假设是 test_only_list_allowed(self)
我对这种事情,我需要帮助。
测试表明代码预期字符串为 returned。 assert
引发 AssertionError
异常。您想要 return 与 assertEquals()
测试正在寻找的字符串相同,因此 'Only lists allowed'
,而不是 msg
参数(当测试 失败).
而不是使用 assert
使用 return
和 return 预期的字符串:
if type(listinput) != list:
return "Only lists allowed"
请注意,通常您会使用 isinstance()
来测试类型:
if not isinstance(listinput, list):
return "Only lists allowed"
for digit in listinput:
if not isinstance(digit, int):
continue
if digit >= 0:
report[0] += 1
elif digit < 0:
report[1] += digit
我对整数使用了单一测试,而不是在每个分支中进行测试。你甚至可以有一个不支持与 0
比较的类型,所以你想先把那个测试排除在外。