如何在测试中检查返回值的类型

时间:2017-12-14 17:36:22

标签: python pytest

我需要为我的功能编写测试。现在我只检查我的回报类型:

assert type(main.get_values(path)) == list

我能否以某种方式检查返回的值是list还是list of strings?我是python的新手,所以这可能是一个非常蹩脚的问题。

2 个答案:

答案 0 :(得分:2)

修改 正如quamrana所提到的,测试值隐式验证类型,也是我通常会做的。但是,这是对原始问题的回答。

与许多语言中的某些数组类型不同,Python列表允许包含任何数据类型组合。因此,实现此目的的最清楚(虽然繁琐)方法是检查列表中的每个值以确保它是一个字符串。例如,

case class Node[T](v: T, lft: Tree[T], rght: Tree[T]) extends Tree[T]

case class Leaf[T](v: T) extends Tree[T]

如果你有这样的数据

,这将让你的测试通过
# Check to see if data is a list, as before
assert type(my_data) is list

# Now check each value in your data is a string
for value in my_data:
    assert type(value) is str

但如果你有这样的数据

那就没有了
my_data = ["h", "e", "l", "l", "o"]

答案 1 :(得分:1)

除了可接受的答案,您还可以

 # Check to see if data is a list, as before
    assert isinstance(value, list)