gpt4 book ai didi

Python:模拟实例的问题

转载 作者:太空宇宙 更新时间:2023-11-04 11:02:22 25 4
gpt4 key购买 nike

我在模拟对象以测试描述符时遇到问题。

这是描述符的代码:

class Text(object):
def __init__(self, default_value=u'', validators=[]):
self.validators = validators
self._value = default_value

def __set__(self, instance, value):
for validator in self.validators:
validator(value).validate()

这是测试:

def test_text_validator_raises_exception(self):
validator = Mock()
validator.validate.side_effect = ValidationError()
text = Text(validators=[validator])
self.assertRaises( ValidationError, text__set__, (text, '') )

编辑:函数里有() 是我复制代码的时候打错了。

我得到的错误是 set() 恰好有 3 个参数。但是我在答案中注意到我不应该将元组作为最后一个参数传递。

但是当我在测试函数中调用 validator('').validate() 时它也不起作用。

最佳答案

    Text 中的
  • validator 是一个对象工厂,例如类对象
  • test_.. 函数中的
  • validator 用作具体实例——对象工厂的产品。

你应该给 Text() 一些东西,用 .validate 方法返回对象而不是对象本身:

def test_text_validator_raises_exception(self):
validator = Mock()
validator.validate.side_effect = ValidationError()
text = Text(validators=[Mock(return_value=validator)])
self.assertRaises(ValidationError, text.__set__, text, '')

关于Python:模拟实例的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com