我的代码没有通过一些隐藏的测试,我需要帮助
单元测试
def replicate_recur(a, b):
#checking for correctness of 'a' type
if not isinstance(a, int) and not isinstance(a, str):
raise ValueError
#checking for correctness of 'b' type
if not isinstance(b, int) and not isinstance(b, str):
raise ValueError
#exit from function
if a <= 0:
return []
res = replicate_recur(a - 1, b)
res.append(b)
#returning of result
return res
#iterative function
def replicate_iter(a, b):
#checking for correctness of 'a' type
if not isinstance(a, int):
raise ValueError
res = []
for i in range(a):
res.append(b)
return res
a, b = (3,5)
try:
print replicate_recur(a, b)
except ValueError:
print "Wrong 'a or b' type"
try:
print replicate_iter(a, b)
except ValueError:
print "Wrong 'a or b' type"
答案 0 :(得分:0)
不确定它是否完全覆盖了我们无法猜测的“隐藏测试”,但是:
if not isinstance(a, int) and not isinstance(a, str):
为什么接受a
(或b
)为字符串?
如果你通过了,那么在评估TypeError
时会得到a - 1
,这与ValueError
不同(之前if a <= 0:
在python 3中与另一个TypeError
失败{1}}例外)
由于主程序没有捕获TypeError
,因此测试可能会失败。