2

我创建了以下鼻子测试:

@nottest
def _test_validate_helper_eq(self, input, expected, *args, **kwargs):
    result = testedObcject.validatePrice(input, *args, **kwargs)
    eq_(result, expected)


def test_validate_price(self):
    yield self._test_validate_helper_eq, {}, {'price':'0'}
    yield self._test_validate_helper_eq, {}, {'price', -1}, 'price', -1`

validatePrice 是测试对象的函数:

def validatePrice(self, input, name = 'price', default_price=0):
  ...
  return validated_input

所以我有一个测试生成器,它使用_test_validate_helper_eq函数生成 2 个测试。函数也_test_validate_helper_eq接受各种数量的参数并将其传递给validatePrice

第一次测试通过,但第二次测试有问题。如您所见,我在那里传递了额外的 2 个参数,name并且default_price. 此测试失败并出现以下错误:AssertionError: {'price': u'-1'} != set(['price', -1])

事实证明,expected参数的值是set我定义的而不是字典。我不知道这种转换是由鼻子还是因为*args**kwargs使用。

任何想法发生了什么以及如何解决它?

4

2 回答 2

5

输入错误:

yield self._test_validate_helper_eq, {}, {'price', -1}, 'price', -1`

这里{'price', -1}创建了一个集合,你想要一个 dict 并且可能意味着输入{'price': -1}

于 2013-07-18T10:12:49.090 回答
2
yield self._test_validate_helper_eq, {}, {'price', -1}, 'price', -1`
#                                                ^

你的意思是:这里?{a, b, c}是一个集合文字。

于 2013-07-18T10:11:32.363 回答