py2store.test.util¶
utils for testing
-
py2store.test.util.
random_dict_gen
(fields=('a', 'b', 'c'), word_size_range=(1, 10), alphabet='abcdefghijklmnopqrstuvwxyz', n: int = 100)[source]¶ Random dict (of strings) generator
- Parameters
fields – Field names for the random dicts
word_size_range – An int, 2-tuple of ints, or list-like object that defines the choices of word sizes
alphabet – A string or iterable defining the alphabet to draw from
n – The number of elements the generator will yield
- Returns
Random dict (of strings) generator
-
py2store.test.util.
random_formatted_str_gen
(format_string='root/{}/{}_{}.test', word_size_range=(1, 10), alphabet='abcdefghijklmnopqrstuvwxyz', n=100)[source]¶ Random formatted string generator
- Parameters
format_string – A format string
word_size_range – An int, 2-tuple of ints, or list-like object that defines the choices of word sizes
alphabet – A string or iterable defining the alphabet to draw from
n – The number of elements the generator will yield
- Returns
Yields random strings of the format defined by format_string
Examples
# >>> list(random_formatted_str_gen(‘root/{}/{}_{}.test’, (2, 5), ‘abc’, n=5)) [(‘root/acba/bb_abc.test’,),
(‘root/abcb/cbbc_ca.test’,), (‘root/ac/ac_cc.test’,), (‘root/aacc/ccbb_ab.test’,), (‘root/aab/abb_cbab.test’,)]
>>> # The following will be made not random (by restricting the constraints to "no choice" >>> # ... this is so that we get consistent outputs to assert for the doc test. >>> >>> # Example with automatic specification >>> list(random_formatted_str_gen('root/{}/{}_{}.test', (3, 4), 'a', n=2)) [('root/aaa/aaa_aaa.test',), ('root/aaa/aaa_aaa.test',)] >>> >>> # Example with manual specification >>> list(random_formatted_str_gen('indexed field: {0}: named field: {name}', (2, 3), 'z', n=1)) [('indexed field: zz: named field: zz',)]
-
py2store.test.util.
random_string
(length=7, alphabet='abcdefghijklmnopqrstuvwxyz')[source]¶ Same as random_word, but it optimized for strings (5-10% faster for words of length 7, 25-30% faster for words of size 1000)
-
py2store.test.util.
random_tuple_gen
(tuple_length=3, word_size_range=(1, 10), alphabet='abcdefghijklmnopqrstuvwxyz', n: int = 100)[source]¶ Random tuple (of strings) generator
- Parameters
tuple_length – The length of the tuples generated
word_size_range – An int, 2-tuple of ints, or list-like object that defines the choices of word sizes
alphabet – A string or iterable defining the alphabet to draw from
n – The number of elements the generator will yield
- Returns
Random tuple (of strings) generator
-
py2store.test.util.
random_word
(length, alphabet, concat_func=<built-in function add>)[source]¶ Make a random word by concatenating randomly drawn elements from alphabet together :param length: Length of the word :param alphabet: Alphabet to draw from :param concat_func: The concatenation function (e.g. + for strings and lists)
Note: Repeated elements in alphabet will have more chances of being drawn.
- Returns
A word (whose type depends on what concatenating elements from alphabet produces).
Not making this a proper doctest because I don’t know how to seed the global random temporarily >>> t = random_word(4, ‘abcde’); # e.g. ‘acae’ >>> t = random_word(5, [‘a’, ‘b’, ‘c’]); # e.g. ‘cabba’ >>> t = random_word(4, [[1, 2, 3], [40, 50], [600], [7000]]); # e.g. [40, 50, 7000, 7000, 1, 2, 3] >>> t = random_word(4, [1, 2, 3, 4]); # e.g. 13 (because adding numbers…) >>> # … sometimes it’s what you want: >>> t = random_word(4, [2 ** x for x in range(8)]); # e.g. 105 (binary combination) >>> t = random_word(4, [1, 2, 3, 4], concat_func=lambda x, y: str(x) + str(y)); # e.g. ‘4213’ >>> t = random_word(4, [1, 2, 3, 4], concat_func=lambda x, y: int(str(x) + str(y))); # e.g. 3432
-
py2store.test.util.
random_word_gen
(word_size_range=(1, 10), alphabet='abcdefghijklmnopqrstuvwxyz', n=100)[source]¶ Random string generator :param word_size_range: An int, 2-tuple of ints, or list-like object that defines the choices of word sizes :param alphabet: A string or iterable defining the alphabet to draw from :param n: The number of elements the generator will yield
- Returns
Random string generator