一个小库,用于验证我们的数据是否符合合同。
contractp的Python项目详细描述
挛缩
contractpy是一个用于根据契约验证数据的小库。在
基本用途
您可以简单地创建一个contract对象并验证数据是否符合契约。在
from pycontract import Contract, Types my_contract = { 'name': Types.STRING, 'id': Types.INTEGER } contract = Contract(my_contract) assert contract.verify({'name': 'Captain America': 'id': 12345}) is True
是的,就这么简单。在
此外,它也适用于复杂的数据,比如嵌套的dict对象(dict对象中的值可以是另一个dict对象或dict对象列表)。在这种情况下,它将递归地迭代内部dict并根据契约验证它们。请看下面的例子
^{pr2}$如果要为任何字段指定列表,请使用字段data
中指定的方括号([])。在这种情况下,它将根据列表中的合同验证所有值。在
您还可以使用这个库对restapi进行契约测试。这种API契约测试在微服务体系结构中会更有用。 例如
def test_users_api_conforms_the_contract(): user_api_contract = { 'page': Types.INTEGER, 'per_page': Types.INTEGER, 'total': Types.INTEGER, 'total_pages': Types.INTEGER, 'data': [ { 'id': Types.INTEGER, 'name': Types.STRING, 'year': Types.INTEGER, 'color': Types.STRING, 'pantone_value': Types.STRING } ], 'ad': { 'company': Types.STRING, 'url': Types.STRING, 'text': Types.STRING } } response = requests.get('https://reqres.in/api/user?page=1') assert response.status_code == 200 assert Contract(user_api_contract).verify(response.json()) is True
注意:这里,测试api由reqres.in提供支持
- 项目
标签: