Example #1
0
def test_2_way():
    """Test 2-way combination of three parameters."""

    data = {
        "p1": ["v1_1", "v1_2", "v1_3"],
        "p2": ["v2_1", "v2_2", "v2_3", "v2_4"],
        "p3": ["v3_1", "v3_2", "v3_3", "v3_4", "v3_5"]
    }

    constraints = []

    result = t_ways(data, 2)
    
    # this is 3x4 + 3x5 + 4x5 = 47 
    gold = [
        {"p1": "v1_1", "p2": "v2_1"}, {"p1": "v1_2", "p2": "v2_1"},
        {"p1": "v1_3", "p2": "v2_1"},
        {"p1": "v1_1", "p2": "v2_2"}, {"p1": "v1_2", "p2": "v2_2"},
        {"p1": "v1_3", "p2": "v2_2"},
        {"p1": "v1_1", "p2": "v2_3"}, {"p1": "v1_2", "p2": "v2_3"},
        {"p1": "v1_3", "p2": "v2_3"},
        {"p1": "v1_1", "p2": "v2_4"}, {"p1": "v1_2", "p2": "v2_4"},
        {"p1": "v1_3", "p2": "v2_4"},
        {"p1": "v1_1", "p3": "v3_1"}, {"p1": "v1_2", "p3": "v3_1"},
        {"p1": "v1_3", "p3": "v3_1"},
        {"p1": "v1_1", "p3": "v3_2"}, {"p1": "v1_2", "p3": "v3_2"},
        {"p1": "v1_3", "p3": "v3_2"},
        {"p1": "v1_1", "p3": "v3_3"}, {"p1": "v1_2", "p3": "v3_3"},
        {"p1": "v1_3", "p3": "v3_3"},
        {"p1": "v1_1", "p3": "v3_4"}, {"p1": "v1_2", "p3": "v3_4"},
        {"p1": "v1_3", "p3": "v3_4"},
        {"p1": "v1_1", "p3": "v3_5"}, {"p1": "v1_2", "p3": "v3_5"},
        {"p1": "v1_3", "p3": "v3_5"},
        {"p2": "v2_1", "p3": "v3_1"}, {"p2": "v2_2", "p3": "v3_1"},
        {"p2": "v2_3", "p3": "v3_1"}, {"p2": "v2_4", "p3": "v3_1"},
        {"p2": "v2_1", "p3": "v3_2"}, {"p2": "v2_2", "p3": "v3_2"},
        {"p2": "v2_3", "p3": "v3_2"}, {"p2": "v2_4", "p3": "v3_2"},
        {"p2": "v2_1", "p3": "v3_3"}, {"p2": "v2_2", "p3": "v3_3"},
        {"p2": "v2_3", "p3": "v3_3"}, {"p2": "v2_4", "p3": "v3_3"},
        {"p2": "v2_1", "p3": "v3_4"}, {"p2": "v2_2", "p3": "v3_4"},
        {"p2": "v2_3", "p3": "v3_4"}, {"p2": "v2_4", "p3": "v3_4"},
        {"p2": "v2_1", "p3": "v3_5"}, {"p2": "v2_2", "p3": "v3_5"},
        {"p2": "v2_3", "p3": "v3_5"}, {"p2": "v2_4", "p3": "v3_5"}
    ]
        
    check_combinations(result, gold)
Example #2
0
def test_sut():
    """Use grandma to test the SUT."""

    data = {
        "p1": ["v1_1", "v1_2", "v1_3"],
        "p2": ["v2_1", "v2_2", "v2_3", "v2_4"],
        "p3": ["v3_1", "v3_2", "v3_3", "v3_4", "v3_5"]
        }

    constraints = []

    # 3-way test: with three parameters this is a full test
    tests = t_ways(data, 3)
    
    # run all the tests on the SUT
    for t in tests:
        ok_(sut(**t), '%s test failed!' % t)
Example #3
0
def test_1_way():
    """Test 1-way combination of three parameters."""

    data = {
        "p1": ["v1_1", "v1_2", "v1_3"],
        "p2": ["v2_1", "v2_2", "v2_3", "v2_4"],
        "p3": ["v3_1", "v3_2", "v3_3", "v3_4", "v3_5"]
    }

    constraints = []

    result = t_ways(data, 1)
    
    # this is just all values 3+4+5 = 12
    gold = [
        {"p1": "v1_1"}, {"p1": "v1_2"}, {"p1": "v1_3"}, 
        {"p2": "v2_1"}, {"p2": "v2_2"}, {"p2": "v2_3"}, {"p2": "v2_4"}, 
        {"p3": "v3_1"}, {"p3": "v3_2"}, {"p3": "v3_3"}, {"p3": "v3_4"},
        {"p3": "v3_5"}
    ]
        
    check_combinations(result, gold)
Example #4
0
def test_powerfull():
    """Demonstrate application of combinatorial testing."""
    
    spec = {
        'font':          ['arial', 'tahoma', 'brushScript', 'monotypeCorsive'],
        'bold':          [True, False],
        'italic':        [True, False],
        'strikethrough': [True, False],
        'underline':     [True, False],
        'color':         ['black', 'yellow', 'white', 'blue', 'red', 'green'],
        'size':          ['small', 'nominal', 'large', 'xLarge', 'xxLarge', 'xxxLarge', 'ridiculouslyLarge']
    }
    
    # combinations I must NOT test
    incompats = [
        {'font': ['brushScript', 'monotypeCorsive'], 'italic': False, 'bold': True},
        {'font': 'monotypeCorsive', 'italic': True, 'bold': False}]
    
    reqs = []
    
    for t in t_ways(spec, 5, incompats=incompats, reqs=reqs):
        print 'test: ' + str(t)
        yield check_single_testcase, t
Example #5
0
def test_incompats():
    """
    Test incompatibilities. All possible combinations
    must be contained! 
    """

    data = {
        "p1": ["v1_1", "v1_2", "v1_3"],
        "p2": ["v2_1", "v2_2", "v2_3", "v2_4"],
        "p3": ["v3_1", "v3_2", "v3_3", "v3_4", "v3_5"]
    }

    incompats = [{
        #"p1": ["v1_3"],
        "p2": ["v2_4"],
        "p3": ["v3_4", "v3_5"]
    }]

    constraints = []

    result = t_ways(data, 3, incompats=incompats)
    
    # this should be 3x4x5 - 6 = 54 combinations
    gold = [
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_5"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_5"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_5"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_3"}
    ]


    # this should be 1x2 = 2 combinations
    gold_invalid = [
        {"p2": "v2_4", "p3": "v3_4"},
        {"p2": "v2_4", "p3": "v3_5"},
     ]    
        
    check_invalid_combinations(result, gold_invalid)
Example #6
0
def test_3_way():
    """
    Test 3-way combination of three parameters. All possible combinations
    must be contained! 
    """

    data = {
        "p1": ["v1_1", "v1_2", "v1_3"],
        "p2": ["v2_1", "v2_2", "v2_3", "v2_4"],
        "p3": ["v3_1", "v3_2", "v3_3", "v3_4", "v3_5"]
    }

    constraints = []

    result = t_ways(data, 3)
    
    # this should be 3x4x5 = 60 combinations
    gold = [
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_1", "p3": "v3_5"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_2", "p3": "v3_5"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_3", "p3": "v3_5"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_1"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_2"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_3"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_4"},
        {"p1": "v1_1", "p2": "v2_4", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_1", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_2", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_3", "p3": "v3_5"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_1"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_2"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_3"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_4"},
        {"p1": "v1_2", "p2": "v2_4", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_1", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_2", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_3", "p3": "v3_5"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_1"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_2"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_3"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_4"},
        {"p1": "v1_3", "p2": "v2_4", "p3": "v3_5"}
    ]
    
    check_combinations(result, gold)