用 pytest 编写单元测试

Writing a unittest with pytest

我的数据框中有一列并且 ]t 应该有一个“是”值, 但是我的单元测试代码有错误。 这是我的代码:

data = func("value")
assert all("Yes" in data == True)

错误是:

'bool' object is not iterable

您的代码没有迭代该值,但接收它的代码是。

解决方案是:return 一个可迭代对象。我建议您要么将 bool 转换为 string

all 应该将可迭代作为参数而不是布尔值,这就是为什么会出现此错误。

如果您只是想检查数据变量中是否存在一个“是”字符串

assert "Yes" in data

如果要使用,请检查列表中的每个元素是否为“是”

assert all(x == "Yes" for x in data)

但是,这是针对列表,而不是数据框。如果你有一个 pandas 数据框

assert data['column'].str.contains('Yes')