Source code for pulsar.apps.test.populate

from datetime import date, timedelta
from random import uniform, randint, choice

from pulsar.utils.string import random_string


def def_converter(x):
    return x


[docs]def populate(datatype='string', size=10, start=None, end=None, converter=None, choice_from=None, **kwargs): '''Utility function for populating lists with random data. Useful when populating database with data for fuzzy testing. Supported data-types * *string* For example:: populate('string', 100, min_len=3, max_len=10) create a 100 elements list with random strings with random length between 3 and 10 * *date* For example:: from datetime import date populate('date', 200, start=date(1997,1,1), end=date.today()) create a 200 elements list with random datetime.date objects between *start* and *end* * *integer* For example:: populate('integer', 200, start=0, end=1000) create a 200 elements list with random integers between ``start`` and ``end`` * *float* For example:: populate('float', 200, start=0, end=10) create a 200 elements list with random floats between ``start`` and ``end`` * *choice* (elements of an iterable) For example:: populate('choice', 200, choice_from=['pippo','pluto','blob']) create a 200 elements list with random elements from ``choice_from`` ''' data = [] converter = converter or def_converter if datatype == 'date': date_end = end or date.today() date_start = start or date(1990, 1, 1) delta = date_end - date_start for s in range(size): data.append(converter(random_date(date_start, delta.days))) elif datatype == 'integer': start = start or 0 end = end or 1000000 for s in range(size): data.append(converter(randint(start, end))) elif datatype == 'float': start = start or 0 end = end or 10 for s in range(size): data.append(converter(uniform(start, end))) elif datatype == 'choice' and choice_from: for s in range(size): data.append(choice(list(choice_from))) else: for s in range(size): data.append(converter(random_string(**kwargs))) return data
def random_date(date_start, delta): return date_start + timedelta(days=randint(0, delta))