跳转到主要内容

通过nose将QUnit JavaScript测试集成到Django测试套件中

项目描述

通过nose将QUnit JavaScript测试集成到Django测试套件中。

安装

  1. pip install django-nose-qunit.

  2. 'django_nose_qunit'添加到您的INSTALLED_APPS设置中。

  3. 确保您正在使用nose作为测试运行器,请使用以下Django设置

    TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
  4. 通过将其添加到NOSE_PLUGINS Django设置来启用nose插件

    NOSE_PLUGINS = [
        'django_nose_qunit.QUnitPlugin'
    ]

    NOSE_ARGS Django设置

    NOSE_ARGS = [
        '--with-django-qunit',
    ]
  5. 添加到您的URL配置中

    from django_nose_qunit.urls import urlpatterns as qunit_urlpatterns
    urlpatterns += qunit_urlpatterns

    这添加了新的URL形式/qunit/*,除非DEBUG为True或QUnit测试作为测试运行的一部分初始化,否则它们将返回404。

  6. sbo-selenium的README中所述配置Selenium。

  7. 请确保 MEDIA_URL 设置为非空字符串,例如“/media/”。如果没有这样做,实时测试服务器可能会偶尔混淆,将测试页面的请求视为静态文件的请求。

创建单元测试

测试可以使用QUnit以常规方式编写;有关详细信息,请参阅QUnit文档。您只需创建一个JavaScript文件,而不是将HTML页面加载到该文件中(该页面由模板在 qunit/template.html 中提供)。如果您的测试依赖于qunit-fixture div中的HTML固定内容,请创建这些内容作为可以加载为模板的HTML片段的文件。外部脚本依赖项应该是静态文件加载路径中的文件。您应该在测试定义之前添加 QUnit.Django.start(); 并在测试定义的末尾添加 QUnit.Django.end();;这允许测试在浏览器中、nose测试运行中或AMD加载器(如RequireJS)的require()块中适当开始执行。

为了让nose知道您的QUnit测试,在一个通常会被nose搜索的文件中创建 django_nose_qunit.QUnitTestCase 的子类,例如 my_app/test/qunit/test_case.py。它可以包含最简单的 test_file 属性(一个QUnit测试脚本的路径,相对于 STATIC_URL)。您的测试脚本的所有脚本依赖项都应该在 dependencies 属性中给出,路径相对于 STATIC_URL。HTML固定模板的路径在 html_fixtures 属性中列出。

运行单元测试

使用您正常的测试执行命令(使用 django-admin.py 或 manage.py)。执行可以限制为一个或多个指定的包和/或类(例如,“myapp”,“myapp.tests.qunit”,“myapp.tests.qunit:MyTestCase”等)。目前尚不支持仅运行QUnit测试脚本中的单个模块或测试;QUnit模块和测试名称可以是任意字符串,这使得nose命令行解析器难以处理它们。

要在一个常规的Web浏览器中运行QUnit测试,请使用带有 QUNIT_DYNAMIC_REGISTRY 设置为True的runserver管理命令(默认情况下,它具有与 DEBUG 相同的值)。如果 DEBUG 为False,您还需要使用 --insecure 参数来提供静态文件。然后您可以通过类似 https://:8000/qunit/ 的URL访问可用QUnit测试的链接列表。这在首次开发测试脚本和调试失败的测试时非常有用。

工作原理

QUnitTestCase是Django的 LiveServerTestCase 的子类,它在测试类设置时在后台启动Django测试服务器,并在测试类拆卸时停止它。django_nose_qunit包括一个nose插件,可以容纳编写为JavaScript测试文件的简单包装器测试。当nose搜索要运行的测试时,该插件会告诉它如何通过Selenium WebDriver请求浏览器加载每个测试脚本(不运行测试)以获取有关其中包含的模块和测试的信息。一旦这些测试被枚举,它们就像其他任何测试用例一样运行。QUnit测试脚本中的第一个测试执行运行该脚本中的所有测试,并将结果存储。然后每个测试用例根据报告的结果报告成功或失败,失败包括QUnit提供的任何消息。

项目详细信息


下载文件

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

源代码分发

django-nose-qunit-1.6.1.tar.gz (44.4 kB 查看哈希值)

上传时间 源代码

构建分发

django_nose_qunit-1.6.1-py2.py3-none-any.whl (49.9 kB 查看哈希值)

上传时间 Python 2 Python 3

支持