def test_strategy_fail_zero_dimension(): s = get_strategy_example() s.terms[2].left.trigger_fields = ["status"] with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>必须包含ip/uid/did任一key'
def test_strategy_fail_zero_event(): s = get_strategy_example() s.terms = filter(lambda t: t.left.type != "event", s.terms) with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>策略缺乏事件条款'
def test_strategy_fail_mix_dimension(): s = get_strategy_example() s.terms[2].left.trigger_fields = ["uid", "c_ip"] with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>目前只支持单字段触发'
def test_strategy_fail_invalid_field(): s = get_strategy_example() s.terms[0].left.field = "not_exist" with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>条款1>>左表达式>>事件(ACCOUNT_LOGIN)不包含字段(not_exist)'
def test_strategy_fail_multiple_event(): s = get_strategy_example() s.terms[0].left.event = ["nebula", "HTTP_DYNAMIC"] with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>事件条款不能包含不同的事件'
def test_strategy_fail_invalid_category(): s = get_strategy_example() s.category = "invalid" with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>(invalid)不是正确的策略场景'
def test_strategy_fail_zero_setblacklist(): s = get_strategy_example() s.terms = filter(lambda t: t.left.subtype != "setblacklist", s.terms) with pytest.raises(RuntimeError) as excinfo: check_strategy(s) assert excinfo.value.message == '策略(策略)>>策略缺乏黑名单设置条款'
def test_strategy_fail_invalid_score(): s = get_strategy_example() s.score = -1 with pytest.raises(RuntimeError) as excinfo: check_strategy(s) print excinfo.value.message assert excinfo.value.message == '策略(策略)>>策略分值不正确'
def test_strategy_fail_null_strategy(): with pytest.raises(RuntimeError) as excinfo: check_strategy(None) assert excinfo.value.message == '策略为空'
def test_strategy_successful(): s = get_strategy_example() try: check_strategy(s) except Exception as t: pass