Skip to main content

Toffee: Test Object Fixture Factories - easy creation of data fixtures for tests

Project description

Toffee: Test Object Factory Fixtures

Toffee creates factories for your model fixtures:

from toffee import Fixture, Factory

product_factory = Factory(Product, id=Seq())


class MyFixture(Fixture):
    product_1 = product_factory(desc='cuddly toy')
    product_2 = product_factory(desc='toy tractor')
    user = Factory(User, username='fred')
    order = Factory(Order, user=user, products=[product_1, product_2])


def test_product_search():
    with MyFixture() as f:
      assert f.product_1 in search_products('toy')
      assert f.product_2 in search_products('toy')

Toffee is similar in scope to factory_boy. The differences that prompted me to write a new library are:

  • Toffee promotes working with on fixtures as groups of objects to be created and destroyed as a unit, rather than individual factories

  • Explicit support for setup/teardown of fixtures

Read the Toffee documentation to find out more, or visit the bitbucket repo.

Toffee is developed and maintained by Olly Cope.

CHANGELOG

1.0.1 (released 2021-12-08)

  • Fixed compatibility issues with SQLALchemy v1.4+

1.0.0 (released 2019-05-15)

  • Added support for Python 3.7

  • Dropped support for Python 2.x

0.2.1 (released 2017-10-04)

  • Added support for Python 3.5, 3.6. Dropped support for Python 3.3, 3.4

Version 0.2.0

  • Dropped support for using setattr to configure subobjects. Use the double underscore convention instead.

  • Attribute/item setting on factory objects now results in the same operation being carried out on the generated object. This is useful for creating circular references between factory objects.

  • Lists of factory objects are now supported, making it easier to manage large numbers of test objects.

  • Factories now can take a partial flag. This stops the factory from producing a top-level named object, while still allowing it to be used for the basis of other factories.

Version 0.1.6

  • Added support for Python 3.4.

  • Dropped support for Python 3.2.

  • Tests that delete fixture objects before teardown is called no longer cause SQLAlchemy to invalidate the transaction (and thus potentially cause later tests to fail unexpectedly).

  • Added a scope argument to Seq(), that determines whether the sequence counter is reset at the start of each fixture set up or only once, at the start of the test run.

Version 0.1.5

  • Licensing: toffee is now licensed under the Apache License, Version 2.0

  • Bugfix: Fixed exception in LazyRecorderFactory.destroy_object during fixture teardown

Version 0.1.4

  • Added toffee.TestWithFixture

Version 0.1.3

  • The data mapper factories (SQLAlchemy and Storm) support querying for existing objects in fixtures

  • Added experimental SQLAlchemy support

Version 0.1.2

  • Made setting factoryoptions more flexible. It’s now possible to change the default flush/commit behavior of StormFactory per fixture class and or at setup time when using the context manager syntax.

Version 0.1.1

  • Bugfix: StormFactory did not flush/commit the store on fixture teardown teardown, meaning the store would not be left clean for subsequent operations

Version 0.1

  • initial release

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

toffee-1.0.1.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

toffee-1.0.1-py3-none-any.whl (14.2 kB view details)

Uploaded Python 3

File details

Details for the file toffee-1.0.1.tar.gz.

File metadata

  • Download URL: toffee-1.0.1.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/57.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.7.12

File hashes

Hashes for toffee-1.0.1.tar.gz
Algorithm Hash digest
SHA256 1af7c726effe1f3dafd63fefd4f2a854b138c7bb2fde31c5f5cbb31f6224bff8
MD5 c07a507dd2841681fe55fa0290a3110c
BLAKE2b-256 1ed703cc293d8507c32f29abeb18f43fca92c158b006467a15524d9211f8dc5c

See more details on using hashes here.

File details

Details for the file toffee-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: toffee-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 14.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.22.0 setuptools/57.0.0 requests-toolbelt/0.9.1 tqdm/4.58.0 CPython/3.7.12

File hashes

Hashes for toffee-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 4fac0ede28a7c4836476e0b2abefecbcd08326ae5cbbf20cca7e474b58138749
MD5 b397b2f2d5e6c613a19319d492b3f284
BLAKE2b-256 85ad914d206a919b17ea8be76831e7e0a2bb3790dcf65944fc2eb5c2609b3b0e

See more details on using hashes here.

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