跳转到主要内容

简单的测试套件,通过 $ python setup.py test 启用Django应用测试。

项目描述

Django Setuptest

通过 $ python setup.py test 启用Django应用测试的简单模块。

通常,当您为与Django相关的模块执行 $ python setup.py test 时,您几乎肯定会遇到 DJANGO_SETTINGS_MODULE 环境变量问题,例如。

ImportError: Settings cannot be imported, because environment variable
DJANGO_SETTINGS_MODULE is undefined.

本模块通过在执行测试套件之前配置 DJANGO_SETTINGS_MODULE 环境变量来克服此问题。作为额外的好处,它还会在测试过程中生成 CoveragePEP 8 报告。

安装

  1. 向setup调用提供 test_suite 参数,指定 setuptest.setuptest.SetupTestSuite 测试套件,例如。

    setup(
        # ...
        test_suite='setuptest.setuptest.SetupTestSuite',
    )

    或者为setup调用提供一个cmdclass test 参数,指定setuptest.test 命令,例如:

    from setuptest import test
    
    #...
    
    setup(
        # ...
        cmdclass={'test': test},
    )

    这将覆盖Python的内置test 命令,启用Django测试运行器,并允许您将--failfast 作为命令行参数传递,即:

    $ python setup.py test --failfast

    要使cmdclass 方法正常工作,在运行test 命令之前,应安装并使django-setuptest 可用,在这种情况下,无需在tests_required 参数中指定django-setuptest,具体细节如下。

  2. 为setup调用提供一个包含django-setuptest(如果尚未安装则为必需)以及其他执行测试所需包依赖项的tests_require 参数,例如:

    setup(
        # ...
        tests_require=(
            'django-setuptest',
        ),
    )
  3. 在与应用程序相同的路径中指定setup.pytest_settings 模块中的特定Django设置。在执行测试时,将使用这些设置,例如在test_settings.py 中。

    DATABASE_ENGINE = 'sqlite3'
    
    INSTALLED_APPS = (
        'myapp',
    )
  4. 为了使测试套件能够找到您的测试,您必须为setup调用提供一个packagespy_modules 参数,例如:

    from setuptools import setup, find_packages
    
    setup(
        # ...
        packages=find_packages(),
    )
    
    # Or alternatively...
    
    setup(
        # ...
        py_modules=['myapp'],
    )

用法

一旦正确配置,您就可以从命令行执行测试

$ python setup.py test

或者,如果您想使测试套件在检测到第一个测试失败后停止

$ python setup.py test --failfast

这将输出您的测试结果以及CoveragePEP 8 报告。

要禁用CoveragePEP 8 报告的输出,请提供--quiet 选项。

$ python setup.py test --quiet

要检测到代码更改时自动重新启动测试运行器(类似于如何重新启动runserver),请提供--autoreload 选项。

$ python setup.py test --autoreload

要仅运行特定测试用例的测试,请指定测试用例作为--label 选项。

$ python setup.py test --label app.TestCase

或者,为特定测试方法指定测试用例的测试方法作为--label 选项。

$ python setup.py test --label app.TestCase.test_method

示例输出

包括CoveragePEP 8 报告的虚拟测试输出示例

$ python setup.py test
running test
running egg_info
writing django_dummy.egg-info/PKG-INFO
writing top-level names to django_dummy.egg-info/top_level.txt
writing dependency_links to django_dummy.egg-info/dependency_links.txt
reading manifest file 'django_dummy.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'django_dummy.egg-info/SOURCES.txt'
running build_ext
Creating test database for alias 'default'...
E
======================================================================
ERROR: test_something (dummy.tests.TestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/user/tmp/django-dummy/dummy/tests/__init__.py", line 6, in test_something
    raise NotImplementedError('Test not implemented. Bad developer!')
NotImplementedError: Test not implemented. Bad developer!

----------------------------------------------------------------------
Ran 1 test in 0.000s

FAILED (errors=1)
Destroying test database for alias 'default'...

Coverage Report:
Name              Stmts   Miss  Cover   Missing
-----------------------------------------------
dummy/models      20      2    90%   22, 55

PEP8 Report:
dummy/tests/__init__.py:6:1: W391 blank line at end of file

$

作者

Praekelt基金会

  • Shaun Sephton

  • Hedley Roos

贡献者

  • Jannis Leidel

变更日志

0.2.1 (2016-01-04)

  1. 支持Django 1.9。

0.2 (2015-10-30)

  1. 支持Django 1.8(lamby)。

  2. 从PEP8检查中排除south_migrations(mikebryant)。

0.1.6 (2015-01-13)

  1. 增加了保存原始覆盖率数据的功能。

0.1.5 (2014-09-11)

  1. 引入了对Django 1.7的支持。

0.1.4 (2013-06-21)

  1. South修补了测试管理命令以处理SOUTH_TESTS_MIGRATE设置。如果已安装South,请应用此补丁。

0.1.3 (2013-05-23)

  1. Python 3兼容性。

0.1.2 (2012-07-02)

  1. 从Pep8中排除South迁移。

0.1.1 (2012-06-19)

  1. 对支持PEP8向后不兼容API更新进行了修正。

0.0.9 (2012-06-15)

  1. 现在支持通过标签选项运行特定的测试类或方法。

0.0.8 (2012-06-13)

  1. 增加了自动重新加载选项,在代码更改检测时重新启动测试运行器。

0.0.7 (2012-06-04)

  1. 重构为测试命令,允许提供failfast命令行参数。

0.0.6 (2011-09-08)

  1. 重构、清理、自包含的套件类。

0.0.5 (2011-09-06)

  1. 增加了帧黑客,以解决包和py_modules到测试的问题,不再需要特定于应用程序的测试套件。

0.0.4 (2011-09-06)

  1. 重构了应用程序,改为使用回调风格的方法而不是猴子补丁。感谢jezdez

0.0.3 (2011-08-30)

  1. 更健壮的测试设置导入。

0.0.2 (2011-08-29)

  1. 重复Pep 8错误。

0.0.1 (2011-08-29)

  1. 首次发布。

项目详情


下载文件

下载适合您平台文件的文件。如果您不确定该选择哪一个,请了解有关安装包的更多信息。

源分发

django-setuptest-0.2.1.tar.gz (9.5 kB 查看哈希值)

上传时间

构建分发

django_setuptest-0.2.1-py2.7.egg (12.5 kB 查看哈希值)

上传时间

由支持