在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第三方库


热门话题
两个日期之间的datetime Java HashMap筛选器   java会选择以下选项吗:django+smartGWT似乎是一个不错的选择?   java如何在jsp中显示Json对象   从Java代码调用装入点文件路径   接口中的java JPA Hibernate更新查询   java在从jsp调用时从类获取根目录   java JFileChooser在JTextField中显示多个选定文件   在Springbean基类中定义的方法中使用@Retryable的java不会被重试   java StackOverflower错误和等于疯狂数字的值   swing使Java打印的页边距更小   java使用Matisse GUI builder设置最大宽度   带MySQL的java注册表单JavaFX在intellij中失败   java监听音量按钮事件安卓   java正在寻找一个新的应用程序。NET 3.5/J2EE体系结构概念比较文章/图表   java如何使用SpringJDBC检索记录   java MULE ESB:带有regex()函数的表达式过滤器   java JFrame按钮逻辑错误   java Android SQLite在Date1和Date2之间选择   java求解丢番图方程