Skip to main content
Author:

Zero Piraeus

Contact:
z@etiol.net

fix is a simple library to assist with the creation of fixtures for test functions, methods etc. It provides one decorator, with_fixture, which allows you to attach setup() and teardown() functions to the decorated callable, and access information defined in the fixture from within the test function.

fix was written for use with nose, but doesn’t depend on it, and may also prove useful with other test frameworks.

Examples

Here’s a basic example with setup but no teardown:

from fix import with_fixture

def setup_only(context):

    def setup():
        """Add something to the context."""
        assert context == {}
        context.squee = "kapow"

    return setup

@with_fixture(setup_only)
def case(context):
    assert context == {"squee": "kapow"}

… and here’s a rather more involved one that creates some temporary files to work with, then deletes them during teardown:

import os
import shutil
import tempfile

from fix import with_fixture

def external(context, files=3):

    def setup():
        context.temp_dir = tempfile.mkdtemp()
        context.filenames = ["file_%03d" % i for i in range(files)]
        for filename in context.filenames:
            with open(os.path.join(context.temp_dir, filename), "w") as f:
                f.write("This is the file %r.\n" % filename)

    def teardown():
        shutil.rmtree(context.temp_dir)

    return setup, teardown

@with_fixture(external, files=5)
def check_files(context):
    present = 0
    absent = 0
    for filename in context.filenames:
        if os.path.exists(os.path.join(context.temp_dir, filename)):
            present += 1
        else:
            absent += 1
    return context.temp_dir, present, absent

temp_dir, present, absent = check_files()
assert not os.path.exists(temp_dir)
assert present == 5
assert absent == 0

Installation

This should do the trick:

pip install fix

Licence

fix is released under the GNU General Public License (version 3 or later), a copy of which is included with this distribution in the file COPYING.

Release files for fix 1.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fix 1.0.3
File Size Uploaded
fix-1.0.3.tar.gz 18.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fix 1.0.3
File Interpreter ABI Platform
fix-1.0.3-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 24.3 kB

Release files / fix-1.0.3.tar.gz

Download URL fix-1.0.3.tar.gz
Size 18.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b378107a8975238fd27d1018bb4a78d86836f4f57769df86dadc127bc431001b
BLAKE2b-256 checksum
How to use checksums
1ae4c9571c4c18d2db8557602e470e607bba0132570eeb6ae77f0d7965564ffb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release files / fix-1.0.3-py2.py3-none-any.whl

Download URL fix-1.0.3-py2.py3-none-any.whl
Size 5.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
3ae4cde8797c7444a7385f69599849ca7b3dd3663fb35503281341cb22e82c7b
BLAKE2b-256 checksum
How to use checksums
909b627043aa0968044debaaab41e529996bf4274da1086337d6fc4dd21f2abf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page