通过nose将QUnit JavaScript测试集成到Django测试套件中
项目描述
通过nose将QUnit JavaScript测试集成到Django测试套件中。
安装
pip install django-nose-qunit.
将'django_nose_qunit'添加到您的INSTALLED_APPS设置中。
确保您正在使用nose作为测试运行器,请使用以下Django设置
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
通过将其添加到NOSE_PLUGINS Django设置来启用nose插件
NOSE_PLUGINS = [ 'django_nose_qunit.QUnitPlugin' ]
和NOSE_ARGS Django设置
NOSE_ARGS = [ '--with-django-qunit', ]
添加到您的URL配置中
from django_nose_qunit.urls import urlpatterns as qunit_urlpatterns urlpatterns += qunit_urlpatterns
这添加了新的URL形式/qunit/*,除非DEBUG为True或QUnit测试作为测试运行的一部分初始化,否则它们将返回404。
如sbo-selenium的README中所述配置Selenium。
请确保 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提供的任何消息。
项目详细信息
哈希值 for django_nose_qunit-1.6.1-py2.py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ae8586d92f4138fd7d61dda58af0a5e13f286d4ce0f2fc65eae7b49d64b82618 |
|
MD5 | 0df264aea492efaeb25e6cd4a9fb9c04 |
|
BLAKE2b-256 | 280c83989ed40061e1cc4190ce3403887eb36ae0d1d4ae4a847bb0afe3e45308 |