通过nose将quonitjavascript测试集成到django测试套件中

django-nose-qunit的Python项目详细描述


通过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插件添加到NOSE_PLUGINSdjango设置中来启用它:

    NOSE_PLUGINS = [
        'django_nose_qunit.QUnitPlugin'
    ]
    

    以及NOSE_ARGSdjango设置:

    NOSE_ARGS = [
        '--with-django-qunit',
    ]
    
  5. 在URL配置中添加一个条目:

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

    这将添加格式为/qunit/*的新url,并返回404 除非DEBUG为true,或者Qunit测试已初始化为 试运行。

  6. 配置selenium,如 sbo-selenium自述文件。

  7. 确保将MEDIA_URL设置为一些非空字符串,如“/media/”。 如果不这样做,实时测试服务器有时会感到困惑和 将对测试页的请求视为对静态文件的请求。

创建单元测试

测试可以像平常一样使用qunit以javascript编写;请参见 QUnit documentation了解详细信息。你只需要创建一个 javascript文件,而不是将加载它的html页面(由 模板位于qunit/template.html。如果您的测试依赖于 qunit fixture div,在可以加载的文件中创建html片段 作为模板。外部脚本依赖项应该是staticfiles中的文件 加载路径。您应该在测试定义之前添加QUnit.Django.start();。 和QUnit.Django.end();在测试定义的末尾;这允许 根据测试是否在适当的时间开始执行 在浏览器、nose测试运行或amd的require()块中运行 像RequireJS这样的加载程序。

为了让nose知道你的qunit测试,创建一个子类 django_nose_qunit.QUnitTestCase在通常由 鼻子,例如my_app/test/qunit/test_case.py。它可以包含 只有test_file属性(Qunit测试脚本的路径,相对于 STATIC_URL)。应该给出测试脚本的任何脚本依赖项 作为相对于dependencies属性中STATIC_URL的路径。通往 html fixture模板列在html_fixtures属性中。

运行单元测试

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

要在常规Web浏览器中运行Qunit测试,请使用RunServer管理 将QUNIT_DYNAMIC_REGISTRY设置为true的命令(默认情况下,它具有相同的 值为DEBUG)。如果DEBUG为false,则还需要使用--insecure 用于服务静态文件的参数。然后,您可以访问到 在类似于http://localhost:8000/qunit/的URL上进行可用的Qunit测试。这可能是 在首次开发测试脚本和故障排除时非常有用 测验。

工作原理

qunittestcase是django的LiveServerTestCase的一个子类,它启动一个 在后台django测试服务器上设置测试类并将其停止 泪流满面。django_nose_qunit包含一个nose插件,可以容纳测试 作为javascript测试文件的简单包装器编写。当nose搜索 要运行测试,插件告诉它如何通过selenium webdriver询问浏览器 加载每个测试脚本(不运行测试)以便 有关模块及其包含的测试的信息。一旦这些测试 枚举后,它们像任何其他测试用例一样运行。第一次执行 来自Qunit测试脚本的测试运行脚本中的所有测试,并且 结果被存储。然后,每个测试用例根据 第e报告结果,故障包括Qunit提供的任何消息。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java通过Spring MVC web应用程序向客户端发送文本文件   java是否可以在运行时动态实例化DAO类?   调用VB。来自Java的net函数   java在Android中通过单击打开特定文件夹   java如何使用maven pom。xml标识非标准项目结构中的testng测试用例?   java为什么FOP在大文件上崩溃?   Architecture python+flask和spring boot+java   java Kafka工具根本没有启动Ubuntu 19.10   如何使用Eclipse运行Java USB API for Windows   java如何在Eclipse中查看J2EE预览服务器/容器的日志/控制台?   网页抓取是否可以使用Java crawler crawler4j暂停和恢复抓取?   java当我第二次按下按钮时,应用程序停止工作   带有偏移量和限制的java SQLite分页问题   java如何在OSX mavericks中将端口80转发到8080   java从泛型方法调用非泛型方法   java My代码未按预期工作。十进制输出不是它应该的样子   节点。java中的js加密(jasypt)和nodejs中的解密   java乘法表不工作数组索引超出范围   java将JDBC与Firebirdsql连接起来