Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Running Django test with setup.py test and tox

I built a Django app and made a package out of it with setuptools. Now, I would like to do the following things:

  1. I would like to run all tests with python setup.py test. But when I issue this command, I get:

    /usr/lib/python2.7/distutils/dist.py:267: UserWarning: Unknown distribution option: 'install_requires'
    warnings.warn(msg)
    usage: setup.py [global_opts] cmd1 [cmd1_opts] [cmd2 [cmd2_opts] ...]
    or: setup.py --help [cmd1 cmd2 ...]
    or: setup.py --help-commands
    or: setup.py cmd --help
    
    error: invalid command 'test'
    
  2. I would like to use Tox to run my tests, but I have no idea what should I write in the command attribute to run my Django app tests.

like image 270
linkyndy Avatar asked Oct 28 '13 11:10

linkyndy


1 Answers

in your setup.py:

test_suite = "test_project.runtests.runtests",

And then in your project:

#This file mainly exists to allow python setup.py test to work.
import os, sys
os.environ['DJANGO_SETTINGS_MODULE'] = 'test_project.settings'
test_dir = os.path.dirname(__file__)
sys.path.insert(0, test_dir)

from django.test.utils import get_runner
from django.conf import settings

def runtests():
    test_runner = get_runner(settings)
    failures = test_runner([], verbosity=1, interactive=True)
    sys.exit(failures)

if __name__ == '__main__':
    runtests()

See this tutorial by Eric Holscher.

like image 160
oz123 Avatar answered Sep 30 '22 19:09

oz123