=====================================================
zc.customdoctests的Python项目详细描述
doctest(以及最近的manuel)提供了使用自定义doctest的钩子 解析程序。zc.customdoctests有助于利用它来支持其他 语言,如javascript:
js> function double (x) { ... return x*2; ... } js> double(2) 4
有了manuel,它 促进混合多种语言的doctest,例如python, javascript和sh。
内容
Detailed documentation
Custom doctest parsers
customdoctests在创建自定义 doctest解析器的工作方式非常类似于常规doctest,但是 使用另一种方法来评估示例。使用它,你打电话 zc.customdoctests.doctestparser并传递以下任何选项:
- ps1
第一行提示符,默认为'>>>'。
这必须是与3个字符完全匹配的正则表达式。
(请注意,您不能覆盖第二行提示。)
- 注释前缀
- 注释前缀正则表达式,默认为“”。
- 变换
- 用于转换示例源的函数,默认为 无操作功能。
js模块支持在doctests中使用javascript python-spidermonkey。它提供了一些 定义自定义doctest解析器的示例。
Javascript and Python-Spidermonkey support
要将此连接起来,您可以使用以下内容:
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的示例 用于支持javascript和 集成javascript和python。
javascript doctests使用“js>;”提示(如rhino和 spidermonkey解释器):
js> 2 + ... 'Hi world' // doctest: +ELLIPSIS u'2Hi...
赋值返回值。这会产生恼人的输出 在博士学位中:
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 globals的属性访问:
>>> js.x 3 >>> js.z = 4 js> z 4
您也可以调用它来运行js代码,而不返回结果值:
>>> js('a = x + y') js> a 4
Changelog
1.0.1 (2013-02-14)
- 修复了PYPI页上的RestructedText错误。
1.0.0 (2013-02-13)
- 增加了Python3.3支持。
- 清除setup.py,添加tox.ini和manifest。