我创建了以下鼻子测试:
@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
使用。
任何想法发生了什么以及如何解决它?