【发布时间】:2018-04-05 11:15:40
【问题描述】:
我正在尝试使用 pytest 进行一些单元测试。
我正在考虑做这样的事情:
actual = b_manager.get_b(complete_set)
assert actual is not None
assert actual.columns == ['bl', 'direction', 'day']
第一个断言正常,但第二个断言出现值错误。
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
我认为用 pytest 断言两个不同列表的相等性不是正确的方法。
如何断言数据框列(列表)等于预期列?
谢谢
【问题讨论】:
-
回溯包含一个提示...使用
a.any()或a.all()。 BTWassert不是进行单元测试的“正常”方式 -
@Chris_Rands
assert是在pytest下测试值的THE 方法。pytest内部重写asserts的字节码,调用自己的比较函数。 -
actual.columns是一个列表吗?回溯表明它是一个布尔值。 -
actual.columns 确实是一个列表。经过一些调查后,我意识到比较返回另一个带有布尔值的列表,以检查内容是否不同。 [True, False, True, True ..]. 这就是为什么我必须使用 .All().. 为了能够给 Assert 一个唯一的布尔值而不是布尔值列表
-
@Chris_Rands 我使用的是 pytest,而不是内置的 unittest 框架。那么进行单元测试的正常方法应该是什么?
标签: python unit-testing pytest