文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

聊一聊Python isinstance内置函数

2024-11-29 23:39

关注

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()函数来增强测试的健壮性和准确性,确保数据类型的一致性。

来源:测试开发学习交流内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯