在python 2.x和3.x上对bytes、str和unicode使用doctest

pretext的Python项目详细描述


借口image::https://travis ci.org/moreati/b-prefix-all-the-doctests.svg
:target:https://travis ci.org/moreati/b-prefix-all-the-doctests

这个包使编写包含字符串的doctests变得容易,而且
这些doctests仍然可以与python 2.6、2.7和3.3+一起使用。

默认情况下,使用python 3.x
`repr()`行为

…代码::python

>;>;import prext;prext.activate()
>;>;b“现在字符串在python 2.x&;3.x上有一个一致的repr”
b“现在字符串在所有python版本上都有一个一致的repr”
>;>;u“unicode字符串和嵌套字符串也可以工作”。split()
[“unicode”、“strings”、“strings”&;,“嵌套”、“字符串”、“工作”、“也”]

代码::python

>;>;textfunc()
u'i return a text(unicode)string'

>;>;bytesfunc()
b'i return a byte(binary)string'

on python 2.x``textfunc()``将通过。在python 3.x上它将失败。
这是因为doctest将预期值与``repr(textfunc())``,
进行比较,而在python 3.x上,`repr()`将不包含``u'``前缀。

python 2.x``bytesfunc()``将失败。在python 3.x上,它将通过。
这是因为在python 2.x上,``repr(bytesfunc())``将不包括``b``
前缀。

代码::python

>;>;textfunc()
“我返回文本(unicode)字符串”

>;>;bytesfunc()
“我返回字节(二进制)字符串”

`` textfunc()``现在在python 2.x上会失败,
``bytesfunc()``在python 3.x上会失败。

hack
--


现在doctests可以

-直接显示函数/方法返回的字符串值,
而不诉诸于``print()``或`.encode()``等
-成功地在所有python版本上测试示例

概念证明:

。代码::python

r“
>;>import sys
>;>import借口
>;>myrepr=bar.prefixrepr()
>;>repr=myrepr.repr
>;>def显示挂钩(值):
…如果值不是none:
…sys.stdout.write(myrepr.repr(value))
>;>;sys.displayhook=\u displayhook
>;>;u'
u'
>;>;b'
b'
>;>;bytes()
b'
>;>;b'\0'
b'\x00'
>;>;B“'”
B“'”





备选方案
—————————————————————————————————————————————————————————————————————在所有具有“bytearray()”(2.6版以后)的
python版本上,都有其他选项,例如


-以“bytearray()”返回的“wrap byte string”。

>;>;bytearray(bytesfunc())
bytearray(b'i return a byte(binary)string')

-只支持python 3.x
-使用``print(bytesfunc().decode('ascii')``并仔细选择输入值
-使用``` doctest:+skip`
-使用`` doctest:+ellipsis`

对于doctest`lxml中的html或xml,包括模块
`lxml.html.usedoctest`\lxml.usedoctext`\_ lxml:https://pypi.python.org/pypi/lxml
。_ usedoctest:http://lxml.de/api/lxml.html.usedoctest module.html
。_ lxml.usedoctest:http://lxml.de/api/lxml.usedoctest-module.html

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

推荐PyPI第三方库


热门话题
java脂肪罐立即关闭   javascript如何将PNG数据字符串转换为ReactJS中的可下载文件?   java新文件作为条件的一部分时不返回布尔值   java父变量如何存储比父变量大的子变量?   java从资源管理器调用war文件内的HTML页面   Java接口中的静态方法和默认方法有什么区别?   java proguard不创建输出jar   java在不遍历的情况下查找二叉树的大小   swing删除特定单词Java中的突出显示   java我的表生成失败   为什么我既不能在eclipse控制台中也不能在调试器中看到Java字符数组中的内容?   Java字符串计算器   java如何在onPostExecute(UI阻塞任务)运行时允许设备旋转   将Java转换为javascript代码   如何在具有透明度的java BuffereImage中读取像素颜色   visual studio代码VSCode Java不是linting或自动完成局部变量,而是自动完成Java快捷方式,如“sysout”   java为什么Eclipse有时会重建整个工作区?   java如何确保JUnit@Before有一个伴随的@After