Skip to content

Instantly share code, notes, and snippets.

@rbdixon
Last active July 27, 2018 15:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbdixon/24f7713fbc5f3d882bdc695cc18f8f86 to your computer and use it in GitHub Desktop.
Save rbdixon/24f7713fbc5f3d882bdc695cc18f8f86 to your computer and use it in GitHub Desktop.
Attempt to noodle out how to generate mutated dict subsets.
'''
The goal I have is to generate test dictionaries from an example.
The test dictionaries should vary in terms of which keys are present.
The values should be chosen from one of the provided options.
For example the dict:
{
'A': one of 'A1' or 'A2',
'B': one of 'B1' or 'B2'
}
Goal: Produce all possible dictionaries without duplication.
Should produce 9 variations. One of them is an empty dict.
The problem is that hypothesis "blows up" the number of generated
dicts. If there are just two alternatives for each key some of the
approaches below work. None of them work once there are three
alternatives for any one of the keys.
Run as : pytest -s -v
'''
import pytest
import hypothesis.strategies as st
from frozendict import frozendict
from hypothesis import given
from collections import ChainMap
NUM = 'num'
SEEN = 'seen'
DICT = {'A': st.sampled_from(['A1', 'A2']), 'B': st.sampled_from(['B1', 'B2'])}
KEYS = list(DICT)
@pytest.fixture
def count():
'Provide a dict to keep track of the number of test iterations and the set of generated values.'
res = {NUM: 0, SEEN: set()}
yield res
def update_count(count, d):
'Update the count and generated values set.'
count[NUM] += 1
dhash = hash(frozendict(d))
dupe = ''
if dhash in count[SEEN]:
dupe = 'DUPE'
count[SEEN].add(dhash)
total = len(count[SEEN])
print(f'\nd = {d}, total = {total} {dupe}')
print(f'COUNT = {count[NUM]}')
@given(st.fixed_dictionaries(DICT))
def test_how_many(count, d):
'Runs 5 times, one duplicate'
update_count(count, d)
@given(data=st.data())
def test_how_many_drawn(count, data):
'Runs four times, no duplicaets'
d = data.draw(st.fixed_dictionaries(DICT))
update_count(count, d)
@given(data=st.data())
def test_how_many_drawn_subsets(count, data):
'Runs 100 times, many duplicates'
keys = data.draw(st.sets(st.sampled_from(KEYS)))
st_dict = {k: DICT[k] for k in keys}
d = data.draw(st.fixed_dictionaries(st_dict))
update_count(count, d)
@given(data=st.data())
def test_how_many_drawn_subsets_2(count, data):
'Runs 100 times, many duplicates'
base = data.draw(st.fixed_dictionaries(DICT))
keys = data.draw(st.sets(st.sampled_from(KEYS)))
d = {k: base[k] for k in keys}
update_count(count, d)
@st.composite
def varied_dict(draw):
keys = draw(st.sets(st.sampled_from(KEYS)))
st_dict = {k: DICT[k] for k in keys}
return draw(st.fixed_dictionaries(st_dict))
@given(d=varied_dict())
def test_composite(count, d):
'Runs 100 times, many duplicates'
update_count(count, d)
@given(data=st.data())
def test_fixed_dictionaries(count, data):
'Does not generated {} or dicts with less than the full set of keys.'
ds = [
data.draw(st.fixed_dictionaries({k: data.draw(st.just(DICT[k]))})) for k in KEYS
]
d = dict(ChainMap(*ds))
update_count(count, d)
@st.composite
def varied_dict_permutation(draw):
keys = draw(st.permutations(KEYS))
st_dict = {k: DICT[k] for k in keys}
return draw(st.fixed_dictionaries(st_dict))
@given(data=st.data())
def test_permutations(count, data):
'Does not generated {}, duplicates'
d = data.draw(varied_dict_permutation())
update_count(count, d)
@st.composite
def varied_dict_subsets(draw, st_dict):
keys = [k for k in sorted(st_dict.keys()) if draw(st.booleans())]
draw_dict = {k: st_dict[k] for k in keys}
strategy = st.fixed_dictionaries(draw_dict)
return draw(strategy)
@given(data=st.data())
def test_varied_dict_subsets(count, data):
'Gets pretty close with only one dupe. Add a third value choice and it blows up, too.'
d = data.draw(varied_dict_subsets(DICT))
update_count(count, d)
============================= test session starts ==============================
platform darwin -- Python 3.6.5, pytest-3.6.3, py-1.5.4, pluggy-0.6.0 -- /Users/rbdixon/src/restrike-project/pytest-hypothesis/.direnv/python-3.6.5/bin/python3.6
cachedir: .pytest_cache
rootdir: /Users/rbdixon/src/restrike-project/pytest-hypothesis, inifile:
plugins: hypothesis-3.66.8
collecting ... collected 8 items
test_how_many_runs.py::test_how_many
d = {'A': 'A1', 'B': 'B1'}, total = 1
COUNT = 1
d = {'A': 'A1', 'B': 'B1'}, total = 1 DUPE
COUNT = 2
d = {'A': 'A2', 'B': 'B1'}, total = 2
COUNT = 3
d = {'A': 'A1', 'B': 'B2'}, total = 3
COUNT = 4
d = {'A': 'A2', 'B': 'B2'}, total = 4
COUNT = 5
PASSED
test_how_many_runs.py::test_how_many_drawn
d = {'A': 'A1', 'B': 'B1'}, total = 1
COUNT = 1
d = {'A': 'A1', 'B': 'B2'}, total = 2
COUNT = 2
d = {'A': 'A2', 'B': 'B1'}, total = 3
COUNT = 3
d = {'A': 'A2', 'B': 'B2'}, total = 4
COUNT = 4
PASSED
test_how_many_runs.py::test_how_many_drawn_subsets
d = {}, total = 1
COUNT = 1
d = {}, total = 1 DUPE
COUNT = 2
d = {'A': 'A1'}, total = 2
COUNT = 3
d = {'A': 'A2', 'B': 'B2'}, total = 3
COUNT = 4
d = {'A': 'A2', 'B': 'B1'}, total = 4
COUNT = 5
d = {'A': 'A1', 'B': 'B1'}, total = 5
COUNT = 6
d = {'A': 'A1'}, total = 5 DUPE
COUNT = 7
d = {'A': 'A1', 'B': 'B1'}, total = 5 DUPE
COUNT = 8
d = {'A': 'A1', 'B': 'B2'}, total = 6
COUNT = 9
d = {'A': 'A2'}, total = 7
COUNT = 10
d = {'A': 'A2', 'B': 'B1'}, total = 7 DUPE
COUNT = 11
d = {}, total = 7 DUPE
COUNT = 12
d = {'A': 'A1', 'B': 'B1'}, total = 7 DUPE
COUNT = 13
d = {}, total = 7 DUPE
COUNT = 14
d = {'A': 'A2', 'B': 'B2'}, total = 7 DUPE
COUNT = 15
d = {'A': 'A2', 'B': 'B2'}, total = 7 DUPE
COUNT = 16
d = {'A': 'A1', 'B': 'B1'}, total = 7 DUPE
COUNT = 17
d = {'A': 'A2'}, total = 7 DUPE
COUNT = 18
d = {}, total = 7 DUPE
COUNT = 19
d = {'A': 'A2'}, total = 7 DUPE
COUNT = 20
d = {}, total = 7 DUPE
COUNT = 21
d = {'A': 'A1', 'B': 'B1'}, total = 7 DUPE
COUNT = 22
d = {'B': 'B2'}, total = 8
COUNT = 23
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 24
d = {}, total = 8 DUPE
COUNT = 25
d = {'A': 'A2', 'B': 'B1'}, total = 8 DUPE
COUNT = 26
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 27
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 28
d = {'B': 'B2'}, total = 8 DUPE
COUNT = 29
d = {'A': 'A2', 'B': 'B2'}, total = 8 DUPE
COUNT = 30
d = {}, total = 8 DUPE
COUNT = 31
d = {}, total = 8 DUPE
COUNT = 32
d = {}, total = 8 DUPE
COUNT = 33
d = {'A': 'A1'}, total = 8 DUPE
COUNT = 34
d = {}, total = 8 DUPE
COUNT = 35
d = {'A': 'A2', 'B': 'B1'}, total = 8 DUPE
COUNT = 36
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 37
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 38
d = {'B': 'B1'}, total = 9
COUNT = 39
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 40
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 41
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 42
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 43
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 44
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 45
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 46
d = {}, total = 9 DUPE
COUNT = 47
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 48
d = {}, total = 9 DUPE
COUNT = 49
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 50
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 51
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 52
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 53
d = {}, total = 9 DUPE
COUNT = 54
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 55
d = {}, total = 9 DUPE
COUNT = 56
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 57
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 58
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 59
d = {}, total = 9 DUPE
COUNT = 60
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 61
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 62
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 63
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 64
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 65
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 66
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 67
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 68
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 69
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 70
d = {}, total = 9 DUPE
COUNT = 71
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 72
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 73
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 74
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 75
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 76
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 77
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 78
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 79
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 80
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 81
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 82
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 83
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 84
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 85
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 86
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 87
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 88
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 89
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 90
d = {}, total = 9 DUPE
COUNT = 91
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 92
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 93
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 94
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 95
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 96
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 97
d = {}, total = 9 DUPE
COUNT = 98
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 99
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 100
PASSED
test_how_many_runs.py::test_how_many_drawn_subsets_2
d = {}, total = 1
COUNT = 1
d = {'A': 'A1'}, total = 2
COUNT = 2
d = {}, total = 2 DUPE
COUNT = 3
d = {}, total = 2 DUPE
COUNT = 4
d = {}, total = 2 DUPE
COUNT = 5
d = {'A': 'A2', 'B': 'B2'}, total = 3
COUNT = 6
d = {'A': 'A2', 'B': 'B2'}, total = 3 DUPE
COUNT = 7
d = {'B': 'B1'}, total = 4
COUNT = 8
d = {'A': 'A1', 'B': 'B2'}, total = 5
COUNT = 9
d = {'A': 'A2', 'B': 'B1'}, total = 6
COUNT = 10
d = {}, total = 6 DUPE
COUNT = 11
d = {'A': 'A1', 'B': 'B1'}, total = 7
COUNT = 12
d = {'A': 'A1', 'B': 'B1'}, total = 7 DUPE
COUNT = 13
d = {'A': 'A2'}, total = 8
COUNT = 14
d = {'A': 'A1', 'B': 'B1'}, total = 8 DUPE
COUNT = 15
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 16
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 17
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 18
d = {'A': 'A1', 'B': 'B1'}, total = 8 DUPE
COUNT = 19
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 20
d = {'A': 'A2', 'B': 'B2'}, total = 8 DUPE
COUNT = 21
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 22
d = {'A': 'A2', 'B': 'B1'}, total = 8 DUPE
COUNT = 23
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 24
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 25
d = {'A': 'A2', 'B': 'B1'}, total = 8 DUPE
COUNT = 26
d = {'A': 'A2', 'B': 'B2'}, total = 8 DUPE
COUNT = 27
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 28
d = {}, total = 8 DUPE
COUNT = 29
d = {'A': 'A1'}, total = 8 DUPE
COUNT = 30
d = {'B': 'B2'}, total = 9
COUNT = 31
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 32
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 33
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 34
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 35
d = {}, total = 9 DUPE
COUNT = 36
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 37
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 38
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 39
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 40
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 41
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 42
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 43
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 44
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 45
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 46
d = {}, total = 9 DUPE
COUNT = 47
d = {}, total = 9 DUPE
COUNT = 48
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 49
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 50
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 51
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 52
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 53
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 54
d = {}, total = 9 DUPE
COUNT = 55
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 56
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 57
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 58
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 59
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 60
d = {}, total = 9 DUPE
COUNT = 61
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 62
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 63
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 64
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 65
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 66
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 67
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 68
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 69
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 70
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 71
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 72
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 73
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 74
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 75
d = {}, total = 9 DUPE
COUNT = 76
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 77
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 78
d = {}, total = 9 DUPE
COUNT = 79
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 80
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 81
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 82
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 83
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 84
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 85
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 86
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 87
d = {}, total = 9 DUPE
COUNT = 88
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 89
d = {}, total = 9 DUPE
COUNT = 90
d = {}, total = 9 DUPE
COUNT = 91
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 92
d = {}, total = 9 DUPE
COUNT = 93
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 94
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 95
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 96
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 97
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 98
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 99
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 100
PASSED
test_how_many_runs.py::test_composite
d = {}, total = 1
COUNT = 1
d = {}, total = 1 DUPE
COUNT = 2
d = {'B': 'B1'}, total = 2
COUNT = 3
d = {'A': 'A1', 'B': 'B1'}, total = 3
COUNT = 4
d = {}, total = 3 DUPE
COUNT = 5
d = {'A': 'A2'}, total = 4
COUNT = 6
d = {}, total = 4 DUPE
COUNT = 7
d = {'A': 'A2', 'B': 'B1'}, total = 5
COUNT = 8
d = {'A': 'A2', 'B': 'B1'}, total = 5 DUPE
COUNT = 9
d = {'A': 'A2'}, total = 5 DUPE
COUNT = 10
d = {'A': 'A2', 'B': 'B2'}, total = 6
COUNT = 11
d = {'A': 'A1', 'B': 'B2'}, total = 7
COUNT = 12
d = {'A': 'A1'}, total = 8
COUNT = 13
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 14
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 15
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 16
d = {'A': 'A1', 'B': 'B1'}, total = 8 DUPE
COUNT = 17
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 18
d = {}, total = 8 DUPE
COUNT = 19
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 20
d = {'A': 'A1'}, total = 8 DUPE
COUNT = 21
d = {'A': 'A2', 'B': 'B2'}, total = 8 DUPE
COUNT = 22
d = {'A': 'A1'}, total = 8 DUPE
COUNT = 23
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 24
d = {'A': 'A2', 'B': 'B1'}, total = 8 DUPE
COUNT = 25
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 26
d = {'A': 'A2'}, total = 8 DUPE
COUNT = 27
d = {}, total = 8 DUPE
COUNT = 28
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 29
d = {'A': 'A2', 'B': 'B2'}, total = 8 DUPE
COUNT = 30
d = {}, total = 8 DUPE
COUNT = 31
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 32
d = {'A': 'A1', 'B': 'B1'}, total = 8 DUPE
COUNT = 33
d = {'B': 'B1'}, total = 8 DUPE
COUNT = 34
d = {'A': 'A1', 'B': 'B1'}, total = 8 DUPE
COUNT = 35
d = {'A': 'A1'}, total = 8 DUPE
COUNT = 36
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 37
d = {'A': 'A2', 'B': 'B2'}, total = 8 DUPE
COUNT = 38
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 39
d = {'A': 'A2', 'B': 'B1'}, total = 8 DUPE
COUNT = 40
d = {'A': 'A1', 'B': 'B2'}, total = 8 DUPE
COUNT = 41
d = {'B': 'B2'}, total = 9
COUNT = 42
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 43
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 44
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 45
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 46
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 47
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 48
d = {}, total = 9 DUPE
COUNT = 49
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 50
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 51
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 52
d = {}, total = 9 DUPE
COUNT = 53
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 54
d = {}, total = 9 DUPE
COUNT = 55
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 56
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 57
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 58
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 59
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 60
d = {'A': 'A2', 'B': 'B2'}, total = 9 DUPE
COUNT = 61
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 62
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 63
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 64
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 65
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 66
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 67
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 68
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 69
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 70
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 71
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 72
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 73
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 74
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 75
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 76
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 77
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 78
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 79
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 80
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 81
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 82
d = {}, total = 9 DUPE
COUNT = 83
d = {}, total = 9 DUPE
COUNT = 84
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 85
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 86
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 87
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 88
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 89
d = {'A': 'A1', 'B': 'B2'}, total = 9 DUPE
COUNT = 90
d = {'A': 'A1'}, total = 9 DUPE
COUNT = 91
d = {'A': 'A2', 'B': 'B1'}, total = 9 DUPE
COUNT = 92
d = {}, total = 9 DUPE
COUNT = 93
d = {'A': 'A1', 'B': 'B1'}, total = 9 DUPE
COUNT = 94
d = {}, total = 9 DUPE
COUNT = 95
d = {}, total = 9 DUPE
COUNT = 96
d = {'B': 'B1'}, total = 9 DUPE
COUNT = 97
d = {'A': 'A2'}, total = 9 DUPE
COUNT = 98
d = {}, total = 9 DUPE
COUNT = 99
d = {'B': 'B2'}, total = 9 DUPE
COUNT = 100
PASSED
test_how_many_runs.py::test_fixed_dictionaries
d = {'A': 'A1', 'B': 'B1'}, total = 1
COUNT = 1
d = {'A': 'A1', 'B': 'B2'}, total = 2
COUNT = 2
d = {'A': 'A1', 'B': 'B2'}, total = 2 DUPE
COUNT = 3
d = {'A': 'A2', 'B': 'B2'}, total = 3
COUNT = 4
d = {'A': 'A2', 'B': 'B1'}, total = 4
COUNT = 5
PASSED
test_how_many_runs.py::test_permutations
d = {'A': 'A1', 'B': 'B1'}, total = 1
COUNT = 1
d = {'A': 'A1', 'B': 'B2'}, total = 2
COUNT = 2
d = {'A': 'A2', 'B': 'B1'}, total = 3
COUNT = 3
d = {'A': 'A2', 'B': 'B2'}, total = 4
COUNT = 4
d = {'A': 'A1', 'B': 'B1'}, total = 4 DUPE
COUNT = 5
d = {'A': 'A2', 'B': 'B2'}, total = 4 DUPE
COUNT = 6
d = {'A': 'A2', 'B': 'B1'}, total = 4 DUPE
COUNT = 7
d = {'A': 'A1', 'B': 'B2'}, total = 4 DUPE
COUNT = 8
PASSED
test_how_many_runs.py::test_varied_dict_subsets
d = {}, total = 1
COUNT = 1
d = {'B': 'B1'}, total = 2
COUNT = 2
d = {'B': 'B1'}, total = 2 DUPE
COUNT = 3
d = {'A': 'A1'}, total = 3
COUNT = 4
d = {'B': 'B2'}, total = 4
COUNT = 5
d = {'A': 'A1', 'B': 'B1'}, total = 5
COUNT = 6
d = {'A': 'A2'}, total = 6
COUNT = 7
d = {'A': 'A2', 'B': 'B1'}, total = 7
COUNT = 8
d = {'A': 'A1', 'B': 'B2'}, total = 8
COUNT = 9
d = {'A': 'A2', 'B': 'B2'}, total = 9
COUNT = 10
PASSED
=========================== 8 passed in 1.98 seconds ===========================
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment