简化对象部分匹配的库。
AnyValid的Python项目详细描述
任何有效的
=========
anyvalid类是一个包装类,例如,
`formencode.validators<;http://www.formencode.org/en/latest/modules/validators.html;module formencode.validators>;`,
这允许您部分指定它应该匹配的对象类型。到
看到它的有用性,可能更容易首先查看
mock的任意对象(`from unittest.mock's
文档<;http://docs.python.org/3/library/unittest.mock.html any>;`:
有时您可能需要对
mock调用中的参数,但要么不关心
参数或希望从调用参数和
对它们做出更复杂的断言。
要忽略某些参数,可以传入比较
等于一切。调用assert调用
断言调用一次后,不管是什么
进来了。
…代码::python
>;
>;mock=模拟(返回值=无)
>;>mock('foo',bar=object())
>;>;mock.assert_called_once_with('foo',bar=any)
any也可用于与调用列表进行比较,如
模拟调用:
…代码::python
>;
>;m=magicmock(返回值=无)
>>米(1)
>;米(1,2)
>>m(对象())
>;m.mock_calls==[呼叫(1),呼叫(1,2),任意]
正确
现在,如果您想对
参数,但可能不知道确切的值,或者希望避免
某些值(例如“none”)。这是任何合法的人都可能来的地方
方便。它提供了一种非常简单的方法来利用所有伟大的工作
已放入formencode的验证器中,以便您的测试
代码可以生成高级断言,同时易于阅读和维护。
示例
========
简单参数匹配:
…代码::python
>;>;
>;>>来自模拟导入模拟
>>gt;从任何有效导入any valid、int、string
>;>;
>>>定义检查调用(foo,bar):
…尝试:
…mock=mock(返回值=none)
…模拟(foo,bar=bar)
…mock.assert_用(anyvalid(字符串(min_lenght=3))调用了_once_,
…bar=anyvalid(int(min=2)))
…除断言者外:
…返回false
…返回真值
…
>>>检查呼叫('fo',1)
错误
>>>检查呼叫(8,0)
错误
>>>检查呼叫('foo',2)
正确
匹配松散定义的dict参数:
…代码::python
>>>>从任何有效的导入任何有效的、数字的、其中之一的
>>gt;有效输入={…'堆芯温度:任意有效(数值(最小=35,最大=41.5)),
…协议:anyValid(其中一个(['https','http']),
…}
>>>模拟=模拟(返回值=无)
>>gt;模拟(核心温度:36.8,“协议”:“https”)
>>>模拟.断言用(有效的输入)调用
>;>;
=========
anyvalid类是一个包装类,例如,
`formencode.validators<;http://www.formencode.org/en/latest/modules/validators.html;module formencode.validators>;`,
这允许您部分指定它应该匹配的对象类型。到
看到它的有用性,可能更容易首先查看
mock的任意对象(`from unittest.mock's
文档<;http://docs.python.org/3/library/unittest.mock.html any>;`:
有时您可能需要对
mock调用中的参数,但要么不关心
参数或希望从调用参数和
对它们做出更复杂的断言。
要忽略某些参数,可以传入比较
等于一切。调用assert调用
断言调用一次后,不管是什么
进来了。
…代码::python
>;
>;mock=模拟(返回值=无)
>;>mock('foo',bar=object())
>;>;mock.assert_called_once_with('foo',bar=any)
any也可用于与调用列表进行比较,如
模拟调用:
…代码::python
>;
>;m=magicmock(返回值=无)
>>米(1)
>;米(1,2)
>>m(对象())
>;m.mock_calls==[呼叫(1),呼叫(1,2),任意]
正确
现在,如果您想对
参数,但可能不知道确切的值,或者希望避免
某些值(例如“none”)。这是任何合法的人都可能来的地方
方便。它提供了一种非常简单的方法来利用所有伟大的工作
已放入formencode的验证器中,以便您的测试
代码可以生成高级断言,同时易于阅读和维护。
示例
========
简单参数匹配:
…代码::python
>;>;
>;>>来自模拟导入模拟
>>gt;从任何有效导入any valid、int、string
>;>;
>>>定义检查调用(foo,bar):
…尝试:
…mock=mock(返回值=none)
…模拟(foo,bar=bar)
…mock.assert_用(anyvalid(字符串(min_lenght=3))调用了_once_,
…bar=anyvalid(int(min=2)))
…除断言者外:
…返回false
…返回真值
…
>>>检查呼叫('fo',1)
错误
>>>检查呼叫(8,0)
错误
>>>检查呼叫('foo',2)
正确
匹配松散定义的dict参数:
…代码::python
>>>>从任何有效的导入任何有效的、数字的、其中之一的
>>gt;有效输入={…'堆芯温度:任意有效(数值(最小=35,最大=41.5)),
…协议:anyValid(其中一个(['https','http']),
…}
>>>模拟=模拟(返回值=无)
>>gt;模拟(核心温度:36.8,“协议”:“https”)
>>>模拟.断言用(有效的输入)调用
>;>;