How to use Pillow to generate an in memory image for your tests.

Sometimes it's handy to be able to generate an in memory image in your tests. This is faster than using an image from the filesystem, but the biggest benefit for me is not needing to spend ages wondering where exactly in your project you should store your single test image.

It wasn't obvious to me how to do this, but here's a snippet for anyone who wants it. I've tested this using Pillow (I guess it would work with PIL) with both Python 2.7 and Python 3 (3.3).

    from io import BytesIO
    from PIL import Image

    def create_test_image():
        file = BytesIO()
        image = Image.new('RGBA', size=(50, 50), color=(155, 0, 0))
        image.save(file, 'png')
        file.name = 'test.png'
        file.seek(0)
        return file

In my WebTest Django form test, I'd use it something like this:

    form = response.forms['some_form']
    form['picture'] = ('picture', create_test_image().read())
    form.submit()
comments powered by Disqus

Pingbacks

Pingbacks are open.