我正在做一个在线python课程,需要我完成一些练习才能进步。本课程的初学者表示,每个测试都有用户必须满足的可见和隐藏要求。在这种情况下,probelem语句如下:
编写一个名为manipulate_data的函数,其作用如下: 给定整数列表时,返回一个列表,其中第一个元素是正数的数量,第二个元素是负数的总和。 注意:将0视为正面。
我想出了这个,我认为除了单元测试用例的第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
EveryTime我运行代码,我总是得到这个错误消息表明我的代码通过2个测试中的三个,我假设是test_only_list_allowed(self)
我对这种事情并不是很有经验,我需要帮助。
答案 0 :(得分:0)
测试显示代码期望字符串返回。 assert
会引发AssertionError
例外。您希望返回与assertEquals()
测试正在查找的字符串相同的字符串,因此'Only lists allowed'
,而不是msg
参数(在测试失败时显示)
而不是使用assert
使用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
进行比较的类型,因此您希望首先完成该测试。