关闭

聊一聊Python isinstance内置函数

发表于:2024-5-06 09:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:华安9527    来源:测试开发学习交流

  isinstance() 是Python的一个内置函数,用于检查一个对象是否是一个已知的类型或子类的实例。这个函数非常有用,特别是在处理多种类型的输入或者需要确保某个对象符合特定类型要求的场景下。其基本语法如下:
  isinstance(object, classinfo)
  object:要检查的对象。
  classinfo:可以是一个类型或者一个类型元组,用来指定要检查的类型或其子类。
  基本用法示例
  检查单一类型:
  x = 5
  if isinstance(x, int):
      print("x 是整数")
  else:
      print("x 不是整数")
  检查多个类型:
  y = 5.0
  if isinstance(y, (int, float)):
      print("y 是整数或浮点数")
  else:
      print("y 不是整数或浮点数")
  检查继承关系:
  假设有一个类层次结构,Animal是基类,Dog和Cat是它的子类。
  class Animal: pass
  class Dog(Animal): pass
  class Cat(Animal): pass
  my_pet = Dog()
  if isinstance(my_pet, Animal):
      print("my_pet 是 Animal 的实例或子类实例")
  注意事项
  当使用元组作为classinfo参数时,isinstance()会检查对象是否为元组中任意一个类的实例。
  对于用户自定义类,如果该类继承了其他类,isinstance()也会考虑继承关系。
  使用isinstance()可以有效地处理Python的动态类型特性,提高代码的灵活性和健壮性。
  在接口自动化测试中,isinstance()函数可以帮助确保传入的数据类型符合预期,从而避免因类型错误导致的测试失败。以下是10个使用isinstance()的场景及其代码示例,这些场景覆盖了验证响应数据类型、处理请求参数、处理时间格式等方面:
  1. 验证响应状态码为整数
  确保从API响应中提取的状态码是一个整数。
  response_status = 200
  assert isinstance(response_status, int), "状态码应为整数"
  2. 检查响应体是否为字典
  确保API响应的主体部分是JSON格式,即Python中的字典。
  response_body = {'message': '成功'}
  assert isinstance(response_body, dict), "响应体应为字典类型"
  3. 确认请求参数为字符串
  在构建请求参数时,确保所有参数都是字符串。
  param = "exampleParam"
  assert isinstance(param, str), "请求参数应为字符串类型"
  4. 验证日期时间格式为字符串
  检查API返回的日期时间字段是否为字符串格式。
  date_str = "2023-04-28T12:00:00Z"
  assert isinstance(date_str, str), "日期时间应为字符串类型"
  5. 检查数值型字段
  确认某个字段是整数或浮点数类型。
  amount = 100.50
  assert isinstance(amount, (int, float)), "金额应为整数或浮点数类型"
  6. 确认列表类型数据
  验证返回结果中的数组字段。
  items_list = ["item1", "item2"]
  assert isinstance(items_list, list), "数据应为列表类型"
  7. 字典中键值对的类型检查
  检查字典中特定键的值是否符合预期类型。
  data = {'price': 99.99}
  assert isinstance(data.get('price'), float), "价格应为浮点数类型"
  8. 验证布尔值
  确认某些标志或状态为布尔类型。
  isActive = True
  assert isinstance(isActive, bool), "激活状态应为布尔类型"
  9. 检查NoneType
  确认某些字段是否为空或未提供。
  optionalField = None
  assert isinstance(optionalField, type(None)), "此字段可接受为None"
  10. 自定义类型验证
  假设有个自定义的User类,检查API响应中用户信息是否为该类的实例。
  class User:
      def __init__(self, name, age):
          self.name = name
          self.age = age
  user_instance = User("Alice", 30)
  assert isinstance(user_instance, User), "返回的用户信息应为User类的实例"
  这些场景展示了如何在接口自动化测试中使用isinstance()函数来增强测试的健壮性和准确性,确保数据类型的一致性。
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号