A Nose插件,用于将JavaScript测试集成到Python测试套件中。
项目描述
NoseJS是Nose插件,用于将JavaScript测试集成到Python测试套件中。
概述
NoseJS是为需要JavaScript代码进行某些Web功能的Python项目而设计的。它目前有两个功能
发现并运行与Python测试并行的JavaScript测试
验证JavaScript语法(检查lint)。
安装
下文有一些可选的外部依赖。
您可以使用easy_install获取NoseJS
$ easy_install NoseJS
或者您可以从http://bitbucket.org/kumar303/nosejs/使用Mercurial克隆源代码,并用以下方式安装
$ python setup.py develop
检查JavaScript语法
NoseJS将在Nose路径中找到JavaScript文件(例如 app.js),并通过jsl命令行工具运行它们以检查“lint”。换句话说,显示语法错误、警告等。您可以使用包管理器在大多数系统上安装jsl(例如,在Mac OS X上使用port install javascript-lint),否则它可以在jsl网站上下载。
用法
要检查lint而不运行任何JavaScript单元测试,请键入
$ nosetests --with-javascript --no-javascript-tests path/to/javascript
要禁用lint检查,请添加 --no-javascript-lint
运行JavaScript测试
NoseJS 还能查找和运行 JavaScript 测试文件,这些文件符合 Nose 的测试模式并以 .js 结尾。目前,NoseJS 支持 Rhino,这是 JavaScript 语言的 Java 实现,运行执行测试。实验性支持使用 --spidermonkey 开关的 python-spidermonkey。
用法
假设你已经将 Rhino 下载到 ~/src,可以使用以下命令发现和运行 JavaScript 测试
$ nosetests --with-javascript --rhino-jar ~/src/rhino1_7R1/js.jar path/to/javascript/tests
此命令会查找符合 Nose 当前测试模式的任何以 .js 结尾的文件,并将它们全部收集起来,然后在所有其他测试结束后使用 Rhino 在一个单独的 Java 子进程中执行。默认情况下,类似 test*.js 的文件将被收集和运行。
NoseJS 的理念是,你可能有一个依赖 JavaScript 实现一些功能的 Python 网络应用程序,并且你想使用一个命令运行 Python 和 JavaScript 测试,即 nosetests。你可以将这些 JavaScript 测试放在项目的任何位置。
以下是一个更实际的例子,展示了如何同时测试 Fudge 项目的 Python 和 JavaScript 功能。其项目布局大致如下
|-- fudge | |-- __init__.py | |-- patcher.py | |-- tests | | |-- __init__.py | | |-- test_fudge.py | | |-- test_patcher.py |-- javascript | |-- fudge | | |-- fudge.js | | |-- tests | | | |-- test_fudge.html | | | `-- test_fudge.js `-- setup.py
可以使用此命令运行 Python 和 JavaScript 测试
$ nosetests --with-javascript \ --rhino-jar ~/src/rhino1_7R1/js.jar \ --with-dom \ --javascript-dir javascript/fudge/tests/ ...................................................... ---------------------------------------------------------------------- Test Fake can find objects can create objects expected call not called call intercepted returns value returns fake Test ExpectedCall ExpectedCall properties call is logged Test fudge.registry expected call not called start resets calls stop resets calls global stop global clear expectations Loaded 6 JavaScript files OK ---------------------------------------------------------------------- Ran 54 tests in 0.392s OK
点号是运行的 Python 测试,下面的输出是 Fudge 的 JavaScript 测试文件打印的内容。务必阅读下面的注意事项;()
指定JavaScript文件的路径
如果 JavaScript 文件嵌套在子目录中,如上述示例所示,请使用以下命令指定该目录
$ nosetests --with-javascript --javascript-dir javascript/fudge/tests/ --javascript-dir ./another/dir
nosejs JavaScript命名空间
所有 JavaScript 都可以使用 nosejs JavaScript 命名空间。以下方法可用
nosejs.requireFile(path)
从测试脚本中加载 JavaScript 文件。如果您多次要求相同的文件,它只会加载一次。如果文件不以斜杠开头,则它应该是相对于从 requireFile() 调用的脚本的目录的路径。例如,以下是 test_fudge.js 在测试之前要求 fudge 库的方式
if (typeof nosejs !== 'undefined') { nosejs.requireFile("../fudge.js"); }
nosejs.requireResource(name)
要求一个与 NoseJS 打包的 JavaScript 文件。有几个可用资源
- jquery-1.3.1.js
在加载任何其他测试之前,将加载 JQuery 库。
- jquery/qunit-testrunner.js
将加载一组非常基本的 JavaScript 函数用于测试。它是 QUnit 测试运行器 接口的部分实现。支持的方法:module(),test(),equals(),ok() 和 expect()。
例如,test_fudge.js 使用 jQuery 和测试运行器
if (typeof nosejs !== 'undefined') { nosejs.requireResource("jquery-1.3.1.js"); nosejs.requireResource("jquery/qunit-testrunner.js"); nosejs.requireFile("../fudge.js"); }
使用DOM
如果你的测试 JavaScript 依赖于类似于浏览器的 DOM 环境,它仍然可能工作!只需运行
$ nosetests --with-javascript --with-dom
这将在加载任何其他 JavaScript 之前加载 John Resig 的 env.js 脚本来模拟 DOM。NoseJS 源中用 @@nosejs 标记对 env.js 进行了一些非常小的修补。
注意事项
目前,如果 JavaScript 测试失败,nosetests 不会 指示失败,其退出状态将不受影响。我无法想出一个干净的方法来做这件事。如果您想帮忙,请与我联系。
一般来说,JavaScript 测试并没有很好地集成到 Nose 中。
等等…Python 和 Java?
Rhino 几乎是唯一一个稳定、面向命令行的 JavaScript 实现,并且它得到了 Mozilla 的良好支持。
或者,John J. Lee 创建了到快速的 Spider Monkey 引擎 的 Python 绑定,Atul Varma 在 Google Code 上进行了复兴,现在 Paul J. Davis 正在处理它(在 git 上,并在 PyPI 上发布)。
目前NoseJS对Python Spidermonkey提供了实验性支持,使用--spidermonkey选项可以切换JavaScript引擎。
贡献
请提交错误和补丁。所有贡献者都将得到认可。谢谢!
变更日志
0.9.4
现在可以在setup.cfg中指定多个路径作为–javascript-dir选项。
0.9.3
添加了–with-javascript-only选项,在需要时可以停止执行任何其他Nose测试。
0.9.2
变更:–js-test-dir选项现在称为–javascript-dir。
添加了python-spidermonkey的实验性支持。
添加了使用jsl工具的JavaScript代码检查。
修复了如何展开自定义JavaScript路径的bug。
0.9.1
修复了发行问题。
0.9
初始发布。
待办事项
改进了Spidermonkey支持。
与NoseJS一起发行Rhino js.jar。
使用git仓库升级env.js。
项目详情
下载文件
下载适合您平台的文件。如果您不确定该选择哪个,请了解更多关于安装包的信息。
源代码发行版
构建发行版
NoseJS-0.9.4.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | be15b59f0e38c6dc41ae5819fa0a88bc29ca1c871e6b308dc3a6a8a7479b3063 |
|
MD5 | 904fdb01eba531419e98ab32065c39c5 |
|
BLAKE2b-256 | c176cb74641148504a3484cf0e16cfd229be523c307cea9a787010d89039c097 |
NoseJS-0.9.4-py2.5.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e2045a7158991e677027b43cf9a5b45636bcf25f3928dcce6aaaf31c5dfcf35b |
|
MD5 | 152854c3bde2cbc2fc558f9918892466 |
|
BLAKE2b-256 | 8a1d5ab99b6137b960bb901750aa14638d91d8cce71ddff8ed16ac9f6b30ceb6 |