Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

All Tests Passed - Have a Banana: Colored Output while doing TDD with DJango and Fabric

DZone's Guide to

All Tests Passed - Have a Banana: Colored Output while doing TDD with DJango and Fabric

· Web Dev Zone
Free Resource

Never build auth again! Okta makes it simple to implement authentication, authorization, MFA and more in minutes. Try the free developer API today! 

I'm a big fan of using PHPUnit with console colors turned on (using the --colors option). Eg:

/static/images/screenshots/phpunit.jpg


It helps get into the natural "red, green, refactor" rhythm.

I'm currently totally immersed in Django, and greatly miss the lack of colour support within the "test" management command. A simple workaround for this is to use Fabric with a few modified color commands. Your fabric file should include the following:

from fabric.colors import _wrap_with

green_bg = _wrap_with('42')
red_bg = _wrap_with('41')

# Set the list of apps to test
env.test_apps = "app1 app2"

def test():
    with settings(warn_only=True):
        result = local('./manage.py test %(test_apps)s --settings=settings_test -v 2 --failfast' % env, capture=False)
    if result.failed:
        print red_bg("Some tests failed")
    else:
        print
        print green_bg("All tests passed - have a banana!")


You can choose your own success and failure messages.

Now we have lovely colors while doing TDD in Django:

/static/images/screenshots/fab.jpg



Source: http://codeinthehole.com/writing/coloured-output-while-doing-tdd-with-django-and-fabric/

Launch your application faster with Okta’s user management API. Register today for the free forever developer edition!

Topics:

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}