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

如何使用Python的doctest-package测试字典相等性?

葛胡媚
2023-03-14
问题内容

我正在为输出字典的函数编写doctest。doctest看起来像

>>> my_function()
{'this': 'is', 'a': 'dictionary'}

当我运行它时,它失败并

Expected:
    {'this': 'is', 'a': 'dictionary'}
Got:
    {'a': 'dictionary', 'this': 'is'}

关于此失败原因的最佳猜测是doctest不是在检查字典是否相等,而是在检查相等__repr__性。这篇文章表明,有某种方法可以诱骗doctest检查字典是否相等。我怎样才能做到这一点?


问题答案:

Doctest本身并不检查__repr__相等性,它只是检查输出是否完全相同。您必须确保打印的内容对于相同的词典都是相同的。您可以使用以下这种方法:

>>> sorted(my_function().items())
[('a', 'dictionary'), ('this', 'is')]

尽管您的解决方案上的这种变化可能更干净:

>>> my_function() == {'this': 'is', 'a': 'dictionary'}
True


 类似资料:
  • 问题内容: 有什么原因为什么不能使用其hashCode方法测试Java字符串的相等性?所以基本上,而不是… 你可以用… 这将很有用,因为一旦字符串计算出其哈希码,则比较字符串将与比较int一样有效,因为该字符串将缓存哈希码,并且如果您将字符串设计为方式。 问题答案: 因为:如果两个对象相等,则两个对象的hashCode必须相等,但是,如果两个对象不相等,则hashCode仍可以相等。 (评论后修改

  • 问题内容: 为什么下面的代码打印? 问题答案: 为什么下面的代码打印? 因为执行比较 浅 。由于数组从中继承其-method ,将对内部数组执行同一性比较,这将失败,因为和均未引用 相同的 数组。 如果更改为它将按预期打印。

  • 我有一个函数,使用。我想给它加一个留档测试。但是,看起来get_type_hints无法解析doctest中定义的类型。 以下是一个简化的示例: 当运行它与它抛出。

  • 问题内容: 我想测试两个Swift枚举值的相等性。例如: 但是,编译器不会编译相等表达式: 我是否定义了自己的等于运算符的重载?我希望Swift编译器能够自动处理它,就像Scala和Ocaml一样。 问题答案: 正如@jedwid有用地指出的那样,从Swift 4.1开始(由于SE-0185,Swift还支持合成以及具有关联值的枚举。 因此,如果您使用的是Swift 4.1或更高版本,则以下内容将

  • 问题内容: 假设我有一个单元测试,想要比较两个复数对象是否相等。这些对象包含许多其他深层嵌套的对象。所有对象的类都有正确定义的方法。 这并不困难: 麻烦的是,如果对象不相等,那么您得到的只是一个失败,没有迹象表明对象图的哪一部分不匹配。调试它可能会很痛苦且令人沮丧。 我当前的方法是确保一切都实现了,然后像这样比较相等性: 由于像Eclipse这样的IDE具有一个特殊的可视化比较器,用于显示失败测试

  • 本文向大家介绍Python如何使用函数做字典的值,包括了Python如何使用函数做字典的值的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python如何使用函数做字典的值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 当需要用到3个及以上的if...elif...else时就要考虑该方法进行简化 通过将函数名称当做字典的值,利用字典