2012-04-11 6 views

Antwort

2

Angenommen, Sie haben ein Verzeichnis namens tests, das eine __init__.py Datei enthält, die eine Funktion namens suite definiert, die eine Testsuite zurückgibt.

Meine Lösung ist der Standard-python setup.py test Befehl mit meinem eigenen test Befehl zu ersetzen, die unittest2 verwendet:

from setuptools import Command 
from setuptools import setup 

class run_tests(Command): 
    """Runs the test suite using the ``unittest2`` package instead of the  
    built-in ``unittest`` package.            

    This is necessary to override the default behavior of ``python setup.py 
    test``.                 

    """ 
    #: A brief description of the command.          
    description = "Run the test suite (using unittest2)." 

    #: Options which can be provided by the user.        
    user_options = [] 

    def initialize_options(self): 
     """Intentionally unimplemented.""" 
     pass 

    def finalize_options(self): 
     """Intentionally unimplemented.""" 
     pass 

    def run(self): 
     """Runs :func:`unittest2.main`, which runs the full test suite using 
     ``unittest2`` instead of the built-in :mod:`unittest` module.   

     """ 
     from unittest2 import main 
     # I don't know why this works. These arguments are undocumented.  
     return main(module='tests', defaultTest='suite', 
        argv=['tests.__init__']) 

setup(
    name='myproject', 
    ..., 
    cmd_class={'test': run_tests} 
) 

Jetzt läuft python setup.py test läuft mein benutzerdefinierten test Befehl.

+3

Die Verwendung dieser Lösung erfordert jedoch die manuelle Installation von "unittest2", da 'python setup.py test' Pakete aus der Liste' tests_require' in 'setup()' nicht mehr automatisch installiert. – argentpepper

Verwandte Themen