我不明白为什么要遇到此错误,因为当我将"高度"通过-1时,它必须将'错误'更改为"高度必须.ge为.ge to Zero"然后测试案例通过。
但是,当我测试基本案例0时。它说列表中没有什么?有人可以解释为什么吗?或告诉我我的代码怎么了
def adjust(values):
#default
height = 0
if ('height' in values):
try:
height = float(values['height'])
except ValueError:
values['error'] = 'non-numeric height'
return values
if height < 0:
values['error'] = 'Heights needs to be .GE 0'
return values
测试案例:100_101失败,通过100_120
def test100_010HeightLowBound(self):
dict = nav.adjust({'op': 'adjust', 'observation': '3d.13','height': '0'})
self.assertEquals('0', dict['height'])
def test100_020OutofBound(self):
dict = nav.adjust({'op': 'adjust', 'observation': '3d1.3', 'height': '-1'})
self.assertEquals('Heights needs to be .GE 0', dict['error'])
由于测试失败而产生错误:self.sersertequals('0',dict ['height'])typeError:'nontype'对象没有属性' getItem '
如果存在height
密钥,并且height >= 0
将不会返回。这意味着dict
将是None
,您将获得所遇到的错误。您只需要确保在所有情况下都返回可用值。
def adjust(values):
height = 0
if ('height' in values):
try:
height = float(values['height'])
except ValueError:
values['error'] = 'non-numeric height'
return values
if height < 0:
values['error'] = 'Heights needs to be .GE 0'
return values # Return values regardless of the previous checks
似乎没有必要返回values
。您要做的就是突变参数。您可以使用突变的参数。
def adjust2(values):
height = 0
if ('height' in values):
try:
height = float(values['height'])
except ValueError:
values['error'] = 'non-numeric height'
return
if height < 0:
values['error'] = 'Heights needs to be .GE 0'
def test100_010HeightLowBound(self):
data = {'op': 'adjust', 'observation': '3d.13','height': '0'}
nav.adjust(data)
self.assertEquals('0', data['height'])
,如评论中所述,命名变量与内置的名称相同是一个坏主意。我将dict
重命名为data
,因此您不会阴影内置的dict
函数。