Documentation for pulsar 0.9.2. For development docs, go here.

Source code for pulsar.apps.test.populate

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

from pulsar.utils.pep import ispy3k

if ispy3k:
    characters = string.ascii_letters + string.digits
else:   # pragma nocover
    characters = string.letters + string.digits
    range = xrange

def_converter = lambda x: 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_string(min_len=3, max_len=20, **kwargs): len = randint(min_len, max_len) if max_len > min_len else min_len return ''.join((choice(characters) for s in range(len))) def random_date(date_start, delta): return date_start + timedelta(days=randint(0, delta))