Mongo启发的策略测试

mitest的Python项目详细描述


Travis status for master branchcodecov.io status for master branch

简介

测试数据是否匹配策略,灵感来自 MongoDB query format

policy表示variabledata之间的预期relationship 使用json(或python dict direct)。

以“$”开头的键表示关系,如$和$lt$gte

示例

政策,变量“A”小于10:

{"a": {"$lt": 10}}

测试,如果给定的数据匹配策略:

>>> policy = TestPolicy({'a': {'$lt': 10}})
>>>
>>> result = policy.test({'a': 9})
>>> bool(result)
True
>>> result.how
[('a', {'$lt': 10}, 9)]
>>>
>>> result = policy.test({'a': 11})
>>> bool(result)
False
>>> result.how
[('a', {'$lt': 10}, 11)]

arrtibutehow表示数据如何匹配或不匹配策略。 例如,(“a”,{“$lt”:10},9)意味着对于变量a,策略是小于10, 并且(或者,如果不匹配)给定的数据是9

策略格式

MongoDB查询格式有点复杂,但是 “简单胜于复杂”。

对于此MongoDB查询:

{"$or":[
    {"$and":[
        {"a":"23"},
        {"b":6}
    ]},
    {"$and":[
        {"c":{"$gte":2}},
        {"c":{"$lt":4}}
    ]}
]}

“$和”是列表中每个项目的默认值:

{"$or":[
    [
        {"a":"23"},
        {"b":6}
    ],
    [
        {"c":{"$gte":2}},
        {"c":{"$lt":4}}
    ]
]}

将项目合并到单个dict:

{"$or":[
    {"a":"23", "b":6},
    {"c":{"$gte":2, "$lt":4}}
]}

简单得多:—)


希望这能帮到你。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java创建猜谜游戏程序   JavaWebSocketContainer。connectToServer似乎挂起了   如何在java中中断函数   java c#socket client multiple BeginSend()未到达服务器   不可见的组件然后在Java中的窗格之间切换   java在应用程序类中使用静态接口安全吗?   java等待函数完成,直到回调到来   使用DataOutputStream时的java新行,Android   java服务对象的定义是什么?   基于视图的javahibernate复合密钥   java将varchar连接到char在JPA(oracle)中不起作用   如何在java中通过point类读取多个点?