跳转到主要内容

=====================================================

项目描述

doctest(以及最近新增的manuel)提供了使用自定义doctest解析器的钩子。《zc.customdoctests》有助于利用这一点来支持其他语言,例如JavaScript

js> function double (x) {
...     return x*2;
... }
js> double(2)
4

manuel一起,它简化了混合多种语言的doctests,例如Python、JavaScript和sh

详细文档

自定义doctest解析器

zc.customdoctests提供了一些帮助,用于创建与常规doctests类似但使用不同方式评估示例的自定义doctest解析器。要使用它,您需要调用zc.customdoctests.DocTestParser并传递以下任一选项

ps1

第一行提示符,默认为'>>>'

这是一个必须与正好3个字符匹配的正则表达式。

(注意:您不能覆盖第二行提示。)

注释前缀

注释前缀正则表达式,默认为‘#’。

转换

一个用于转换示例源码的函数,默认为无操作函数。

js模块提供了在doctests中使用JavaScript的支持,使用python-spidermonkey。它提供了一些自定义doctest解析器的示例。

JavaScript和Python-Spidermonkey支持

要设置此环境,您可以使用类似以下内容:

import doctest, zc.customdoctests.js

test_suite = doctest.DocTestSuite(
    parser=zc.customdoctests.js.parser,
    setUp=zc.customdoctests.js.spidermonkeySetUp)

或者,使用manuel

test_suite = manuel.testing.TestSuite(
    manuel.doctest.Manuel(parser=zc.customdoctests.js.parser) +
    manuel.doctest.Manuel(parser=zc.customdoctests.js.eq_parser) +
    manuel.doctest.Manuel() +
    manuel.capture.Manuel(),
    'spidermonkey.txt',
    setUp=zc.customdoctests.js.spidermonkeySetUp)

注意:zc.customdoctests不需要spidermonkey,因此如果您想使用它,需要单独安装spidermonkey。

使用manuel的一个优点是可以在同一文档中使用多个解析器。在上面的示例中,支持了2种JavaScript示例语法(下面将描述)以及标准的doctest语法。本文档使用manuel运行以允许使用所有3种语法。

在此文档的其余部分,我们将展示JavaScript doctests的示例以及支持JavaScript和集成JavaScript与Python的辅助API。

JavaScript doctests使用“js>”提示(如rhino和spidermonkey解释器中使用的那样)

js> 2 +
... 'Hi world' // doctest: +ELLIPSIS
u'2Hi...

赋值返回值。这可能会在doctests中生成讨厌的输出

js> ob = {a: 1, b: 2}
[object Object]

如果您使用manuel,可以通过使用js!来避免这种情况

js! x = 3

该命令抑制表达式值。

提供加载和打印函数(类似于rhino中的函数)。例如,给定一个javascript文件,double.js

function double (x) {
    return x*2;
}

我们可以加载该文件

js> load('double.js')
js> double(10)
20

我们可以打印值

js> print('Hi')
Hi

Python对象提供对open函数和os模块的访问

js> python.os.path.exists('double.js')
True

js! f = python.open('double.js')
js> print(f.read())
function double (x) {
    return x*2;
}
<BLANKLINE>

js> f.close()

如果您使用manuel,可以混合Python和JavaScript示例,并且有一些API可以帮助使用Python和JavaScript。

有一个add_js_global函数可以将数据从Python复制

>>> add_js_global('y', 1)

js> y
1

还有一个js对象,它提供对js全局属性的属性访问

>>> js.x
3

>>> js.z = 4

js> z
4

您也可以调用此来运行JS代码而不会返回结果值

>>> js('a = x + y')

js> a
4

变更日志

1.0.1 (2013-02-14)

  • 修复PyPI页面上的ReStructuredText错误。

1.0.0 (2013-02-13)

  • 添加Python 3.3支持。

  • 清理setup.py,添加tox.ini和清单。

0.1.0 (2011-05-19)

  • 初始版本

项目详情


下载文件

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

源代码分发

zc.customdoctests-1.0.1.zip (15.8 kB 查看哈希)

上传时间: 源代码

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面