Skip to main content

Easily generate random unicode test data among other things

Project description

Testdata
========

Generate Random Test Data.

These are just a bunch of functions designed to make it easier to test
your code.

To use testdata in your tests, just include the ``testdata.py`` module:

::

import testdata

To install, use Pip:

::

pip install testdata

Or, with Pip using Github:

::

pip install git+https://github.com/Jaymon/testdata#egg=testdata

Functions
---------

--------------

patch
~~~~~

::

patch(mod, **patches)

Patches a module or class with the given patches.

Suppose you had a module like this:

.. code:: python

# module foo.bar

def boom():
return 1

class FooPatch(object):
@classmethod
def bam(cls): return boom()

Now you can easily patch it for testing:

.. code:: python

def mock_boom():
return 2

foo_bar = testdata.patch('foo.bar', boom=mock_boom)
print foo_bar.FooPatch.bam() # 2

# but you can also just pass in objects or modules

from foo.bar import FooPatch
FooPatch = testdata.patch(FooPatch, boom=mock_boom)
print FooPatch.bam() # 2

from foo import bar
bar = testdata.patch(bar, boom=mock_boom)
print bar.FooPatch.bam() # 2

--------------

create\_file\_structure
~~~~~~~~~~~~~~~~~~~~~~~

::

create_file_structure(file_structure, tmpdir=u'')

This just makes it easy to create a lot of folders/files all at once.

.. code:: python

base_dir = "/tmp"
tmpdir, created_dirs, created_files = testdata.create_file_structure(
"""
/foo/
/bar/
/che.txt
/bam.txt
/baz
/flam.txt
""",
tmpdir=base_dir
)

--------------

create\_dir
~~~~~~~~~~~

::

create_dir(path, tmpdir=u"")

create a directory hierarchy

.. code:: python

base_dir = "/tmp"
d = testdata.create_dir("/foo/bar", base_dir)
print d # /tmp/foo/bar

--------------

create\_file
~~~~~~~~~~~~

::

create_file(path, contents=u"", tmpdir=u"")

create a file with contents

.. code:: python

base_dir = "/tmp"
f = testdata.create_dir("/foo/bar.txt", "The file contents", base_dir)
print f # /tmp/foo/bar.txt

--------------

create\_files
~~~~~~~~~~~~~

::

create_files(file_dict, tmpdir=u"")

Create a whole bunch of files, the ``file_dict`` key is the filename,
the value is the contents of the file. The ``file_dict`` is very similar
to the ``create_modules`` param ``module_dict``

--------------

create\_module
~~~~~~~~~~~~~~

::

create_module(module_name, contents=u"", tmpdir=u"", make_importable=True)

create a module with python contents that can be imported

.. code:: python

base_dir = "/tmp"
f = testdata.create_module("foo.bar", "class Che(object): pass", base_dir)
print f # /tmp/foo/bar.py

--------------

create\_modules
~~~~~~~~~~~~~~~

::

create_modules(module_dict, tmpdir=u"", make_importable=True)

create a whole bunch of modules at once

.. code:: python

f = testdata.create_modules(
{
"foo.bar": "class Che(object): pass",
"foo.bar.baz": "class Boom(object): pass",
"foo.che": "class Bam(object): pass",
}
)

--------------

get\_ascii
~~~~~~~~~~

::

get_ascii(str_size=0)

return a string of ascii characters

::

>>> testdata.get_ascii()
u'IFUKzVAauqgyRY6OV'

--------------

get\_float
~~~~~~~~~~

::

get_float(min_size=None, max_size=None)

return a floating point number between ``min_size`` and ``max_size``.

::

>>> testdata.get_float()
2.932229899095845e+307

--------------

get\_int
~~~~~~~~

::

get_int(min_size=1, max_size=sys.maxsize)

return an integer between ``min_size`` and ``max_size``.

::

>>> testdata.get_int()
3820706953806377295

--------------

get\_name
~~~~~~~~~

::

get_name(name_count=2, as_str=True)

returns a random name that can be outside the ascii range (eg, name can
be unicode)

::

>>> testdata.get_name()
u'jamel clarke-cabrera'

--------------

get\_str
~~~~~~~~

::

get_str(str_size=0, chars=None)

return random characters, which can be unicode.

::

>>> testdata.get_str()
u'q\x0bwZ\u79755\ud077\u027aYm\ud0d8JK\x07\U0010df418tx\x16'

--------------

get\_url
~~~~~~~~

::

get_url()

return a random url.

::

>>> testdata.get_url()
u'https://sK6rxrCa626TkQddTyf.com'

--------------

get\_words
~~~~~~~~~~

::

get_words(word_count=0, as_str=True)

return a random amount of words, which can be unicode.

::

>>> testdata.get_words()
u'\u043f\u043e\u043d\u044f\u0442\u044c \u043c\u043e\u0436\u043d\u043e felis, habitasse ultrices Nam \u0436\u0435\u043d\u0430'

--------------

get\_past\_datetime
~~~~~~~~~~~~~~~~~~~

::

get_past_datetime()

return a datetime guarranteed to be in the past

::

>>> testdata.get_past_datetime()
datetime.datetime(2000, 4, 2, 13, 40, 11, 133351)

--------------

get\_future\_datetime
~~~~~~~~~~~~~~~~~~~~~

::

### `get_future_datetime()

return a datetime guarranteed to be in the future

::

>>> testdata.get_future_datetime()
datetime.datetime(2017, 8, 3, 15, 54, 58, 670249)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

testdata-0.5.9.tar.gz (29.2 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page