python - 使用 pytest 对 Python 对象进行单元测试

标签 python testing object comparison pytest

我有一个方法可以返回满足特定条件的对象列表

result = find_objects(some_criteria)
print("%r" % result)

>> [<my_object.my_object object at 0x85abbcc>]

我想写一个pytest来验证find_objects()的运行

def test_finder(testbed):
    result = testbed.find_objects(some_criteria)

    assert result is [<my_object.my_object object at 0x85abbcc>]

到目前为止,pytest 指向左尖括号 (<) 并声明“SyntaxError”

我在想,即使我让它工作,将来当“my_object”存储在另一个位置时它也会失败。如果我有多个实例,我如何确认报告的实例数量正确?

在这种情况下,验证返回对象的方法的输出的 pythonic 方法是什么?

js

最佳答案

如您所料,问题在于尝试进行"is"比较。 “is”表示“是完全相同的对象”,即使两个看起来相同的对象也可能无法通过此测试。

这里有一些你可能想要测试的东西

  • 没有异常
  • 返回的对象是正确的类型

    断言 isinstance(object, ResultClass)

  • 返回的对象有一些特定的属性

    断言 result.attribute == attribute

那种东西。我不认为有一种“可接受”的检查方式,只有几件你可能想检查的事情,由你决定你想检查什么。使用“is”是个坏主意,与内存中的位置进行比较也是个坏主意。

关于python - 使用 pytest 对 Python 对象进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5825236/

相关文章:

java - 按共同值对不同对象进行排序

python - 用 sklearn 解码 pandas 数据帧

python - 如何在 Python 中用另一个数据框引用一个 pandas 数据框?

testing - 如果条件在 Bean shell 采样器中不起作用

ruby-on-rails - 使用 Spork 时如何加载机械师的蓝图?

python - Python 对象的唯一表示

python - 错误 1065 'Query was Empty' 在 python 脚本中

python - 修复 python 中的 ValueError : shapes (1, 2) 和 (4,4) 未对齐 : 2 (dim 1) ! = 4 (dim 0)

javascript - 我想在 Postman Native App 中使用 moment.js(或任何其他脚本)

javascript - 在Javascript单例中用数组成员初始化对象成员的属性