我的代码没有通过一些隐藏的测试,我需要帮助
单元测试
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"发布于 2017-03-24 16:29:34
不确定它是否完全覆盖了我们无法猜测的“隐藏测试”,但是:
if not isinstance(a, int) and not isinstance(a, str):为什么要接受a (或b)是字符串呢?
如果放手不管,那么在评估a - 1时会得到TypeError,这与ValueError不同(在此之前,if a <= 0:在Python3中会因另一个TypeError异常而失败)
因为您的主程序不能捕获TypeError,所以测试可能会失败。
https://stackoverflow.com/questions/42994625
复制相似问题