Search code examples
pythonintegration-testingsetup.py

How do I test the setup.py for my package?


I have a pretty big Python package I've written, about 3500 statements, with a robust unit and acceptance test suite. I feel quite confident about the quality of the code itself, but I'm uneasy about the install process going smoothly for users of the package as I don't know how to reliably test the install in an appropriately isolated environment, short of something like keeping a spare machine around and re-imaging it with a fresh OS install for each test run.

I suspect using virtualenv in the right way might provide a proper test fixture for testing installation, but after extended web searches have uncovered no helpful guidance.

How can I effectively test my setup.py and other installation bits on my development machine?


Solution

  • If you like tools (which I do) check out fabric and the set of Fabric tasks I've written across all my projects:

    e.g: circuits' fabfile

    This should work for just about any Python project and utilizes:

    • Sphinx
    • py.test/tox
    • virtualenv

    Some basic workflows:

    fab build    # build the package in non-development mode
    fab develop  # build the package in development mode
    fab docs     # build/regenerate the documentation
    fab test     # run tie unit test suite
    fab release  # run through a tested release cycle
    

    Type: fab -l for a list of commands and fab help:<name> for help on any command.

    Update: Recently we added fab docker commands to work with Docker

    fab docker:build    # Build a Docker image
    fab docker:publish  # Publish Docker image to the Docker Hub
    fab docker:run      # Run a new Docker container