当前位置: 首页 > 面试题库 >

对python doctests的多版本支持

苏宏峻
2023-03-14
问题内容

我正在这样写我的文档测试:

>>> some_function(a=1, b=2)
{u'id': u'123', u'name': u'abc'}

这对于Python 2.5、2.6和2.7版本可以正常工作,但对于Python 3则失败,并出现以下错误:

Expected:
    {u'id': u'123', u'name': u'abc'}
Got:
    {'id': '123', 'name': 'abc'}

问题是,如果我这样编写我的doctest:

>>> some_function(a=1, b=2)
{'id': '123', 'name': 'abc'}

它们仅适用于Python3,而在Python2版本上无效。我的问题是如何使其跨版本兼容?


问题答案:

我在IPython中遇到了与doctests相同的问题。没有整洁的解决方案,但是我将所有u'前缀都包装在中{},即{u}',并做了一个小功能,可以酌情包括或排除它们。

您可以看到u_format()函数和使用它的doctest。

但这很混乱,因此我将许多测试从doctests移开了。

或者,您可以像这样测试它:

>>> some_function(a=1, b=2) == {'id': '123', 'name': 'abc'}
True

如果键中需要一些unicode字符串,则可以使用u'abþ',并使用distribution2to3在doctest上运行。但这仅适用于输入代码,不适用于输出代表。



 类似资料:
  • 我计划从JBOSS EAP迁移到支持旧版本Java如6或7的Wildfly版本。 我找不到与野生苍蝇和java的兼容性矩阵。 另外,有任何版本的野蝇支持solaris 5吗? wildfly 8是否支持旧的java和Solaris版本。 有人能给我指一下矩阵吗?在那里我可以找到wildfly的兼容性和需求。

  • 我使用JUnit生成协议和Pacts maven插件将协议发布到协议代理中。我正在使用下面的插件配置 当Consumenr协议在broker中上传时,我只能看到2.0版的consumer协议的单个条目。Eirlier我已经上传了1.0版本Eirlier,它没有出现在UI中。有没有办法在HAL浏览器中看到多个版本的同一提供者协议,并通过Https get请求获得不同版本的协议?目前,我只得到最新的消

  • 问题内容: 我开始使用Flask和Python设计一种RESTful Web服务,我想知道如何在同一项目中支持多个API版本。我正在考虑将请求的API版本放在这样的URL中: 一段时间后,我想在API版本1.1中添加另一个端点,并保留v1中所有未更改的内容: 在v2中,“用户”端点已更改: 等等… 看着这个问题,最简单的方法可能是这样的: 但是我可以想象每个新的API版本都将很难维护它。因此,我想

  • Gson提供了注解来控制基于其各种版本的类的Json序列化/反序列化。 考虑以下具有版本支持的类。 在这个类中,我们最初定义了两个变量和,稍后将其添加为一个新变量。 使用定义了,名称从版本开始并经过验证,版本为。 GsonBuilder提供了方法来序列化这样的版本化类。 让我们来看一个实际版本支持的例子。 创建一个名为的Java类文件:GsonTester.java - 执行上面示例代码,得到以下

  • 我试图编译GLSL着色器在LWJGL使用OpenGL。我在MacOS Sierra上。 尝试编译着色器时出现以下错误: 着色器代码在Windows上工作,但在macOS上测试时却不能。下面是着色器代码: 下面是我如何加载着色器。。。 print语句返回正确的输出,但它仍然给我错误。 我在stackoverflow上下搜索了一个解决方案,但每个人都说他们在编译它时没有换行符,我有。我不明白为什么会这

  • JUnit 5在运行时需要Java 8(或更高版本)。当然,您仍然可以测试使用以前版本的JDK编译的代码。