Last active
July 27, 2018 15:28
-
-
Save rbdixon/24f7713fbc5f3d882bdc695cc18f8f86 to your computer and use it in GitHub Desktop.
Attempt to noodle out how to generate mutated dict subsets.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
============================= 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