代码之家  ›  专栏  ›  技术社区  ›  Alex

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

  •  2
  • Alex  · 技术社区  · 7 年前

    我需要为我的函数编写测试。现在我只检查我的报税表类型:

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

    我是否可以检查返回值是否不仅是 list 但是 list of strings ? 我是python新手,所以这可能是一个很蹩脚的问题。

    2 回复  |  直到 7 年前
        1
  •  5
  •   Bryce Aidukaitis    7 年前

    编辑: 正如quamrana提到的,测试值隐式地验证类型,这也是我通常会做的。然而,这里是对您最初问题的回答。

    与许多语言中的某些数组类型不同,Python列表允许包含任何数据类型的组合。因此,实现这一点的最清晰(尽管很麻烦)的方法是检查列表中的每个值,以确保它是一个字符串。例如

    # 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"]
    

    但如果你有这样的数据

    my_data = ["h", "e", 1, ["nested", "list"], {"dictionary":"here"}]
    
        2
  •  3
  •   SMDC    6 年前

    除了公认的答案外,您还可以

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