How to run unittest discover from "python setup.py test"?
Question: I'm trying to figure out how to get `python setup.py test` to run the
equivalent of `python -m unittest discover`. I don't want to use a
run_tests.py script and I don't want to use any external test tools (like
`nose` or `py.test`). It's OK if the solution only works on python 2.7.

In `setup.py`, I think I need to add something to the `test_suite` and/or
`test_loader` fields in config, but I can't seem to find a combination that
works correctly:

    
    
    config = {
        'name': name,
        'version': version,
        'url': url,
        'test_suite': '???',
        'test_loader': '???',
    }
    

**Is this possible using only`unittest` built into python 2.7?**

FYI, my project structure looks like this:

    
    
    project/
      package/
        __init__.py
        module.py
      tests/
        __init__.py
        test_module.py
      run_tests.py <- I want to delete this
      setup.py
    

**Update** : This is possible with `unittest2` but I want find something
equivalent using only `unittest`

From <https://pypi.python.org/pypi/unittest2>

> unittest2 includes a very basic setuptools compatible test collector.
> Specify test_suite = 'unittest2.collector' in your setup.py. This starts
> test discovery with the default parameters from the directory containing
> setup.py, so it is perhaps most useful as an example (see
> unittest2/collector.py).

For now, I'm just using a script called `run_tests.py`, but I'm hoping I can
get rid of this by moving to a solution that only uses `python setup.py test`.

Here's the `run_tests.py` I'm hoping to remove:

    
    
    import unittest
    
    if __name__ == '__main__':
    
        # use the default shared TestLoader instance
        test_loader = unittest.defaultTestLoader
    
        # use the basic test runner that outputs to sys.stderr
        test_runner = unittest.TextTestRunner()
    
        # automatically discover all tests in the current dir of the form test*.py
        # NOTE: only works for python 2.7 and later
        test_suite = test_loader.discover('.')
    
        # run the test suite
        test_runner.run(test_suite)
    


Answer: If you use py27+ or py32+, the solution is pretty simple:

    
    
    test_suite="tests",
    

