当前位置:首页 > 科技  > 软件

Python 推导式在接口自动化里的运用

来源: 责编: 时间:2024-05-07 09:15:14 251观看
导读Python推导式是一种紧凑且强大的构造,允许你用一行代码高效地生成新的数据结构(如列表、字典、集合或生成器)基于现有的可迭代对象。推导式结合了循环、条件判断等结构,提供了非常灵活的方式来处理数据。列表推导式列表推

Python推导式是一种紧凑且强大的构造,允许你用一行代码高效地生成新的数据结构(如列表、字典、集合或生成器)基于现有的可迭代对象。推导式结合了循环、条件判断等结构,提供了非常灵活的方式来处理数据。y1Q28资讯网——每日最新资讯28at.com

y1Q28资讯网——每日最新资讯28at.com

列表推导式

列表推导式(List Comprehensions)y1Q28资讯网——每日最新资讯28at.com

列表推导式是最常见的一种,用于从一个可迭代对象创建一个新列表,其基本语法如下:y1Q28资讯网——每日最新资讯28at.com

[expression for item in iterable if condition]

expression 是针对每个item进行计算并最终放入新列表的表达式。y1Q28资讯网——每日最新资讯28at.com

item 是从iterable中取出的单个元素。y1Q28资讯网——每日最新资讯28at.com

iterable 是任何可迭代对象,如列表、元组、集合、字典或生成器。y1Q28资讯网——每日最新资讯28at.com

condition(可选)是一个过滤条件,只有当该条件为真时,相应的项才会被包含在结果中。y1Q28资讯网——每日最新资讯28at.com

字典推导式

字典推导式(Dictionary Comprehensions)y1Q28资讯网——每日最新资讯28at.com

字典推导式用来快速创建字典,其语法结构如下:y1Q28资讯网——每日最新资讯28at.com

{key_expression: value_expression for item in iterable if condition}

key_expression 和 value_expression 分别对应新字典中每个键值对的键和值。y1Q28资讯网——每日最新资讯28at.com

其他部分与列表推导式相似。y1Q28资讯网——每日最新资讯28at.com

集合推导式

集合推导式(Set Comprehensions)y1Q28资讯网——每日最新资讯28at.com

集合推导式与列表推导式类似,但结果是一个集合(无序且元素唯一),语法为:y1Q28资讯网——每日最新资讯28at.com

{expression for item in iterable if condition}

生成器推导式

生成器推导式(Generator Expressions)y1Q28资讯网——每日最新资讯28at.com

生成器推导式与列表推导式非常相似,但是使用圆括号而不是方括号包围,生成一个生成器对象,它在迭代时按需产生值,节省内存:y1Q28资讯网——每日最新资讯28at.com

(expression for item in iterable if condition)

代码示例y1Q28资讯网——每日最新资讯28at.com

场景1: 动态参数构造

# 假设我们需要测试用户注册接口,每个用户有不同的用户名和邮箱y1Q28资讯网——每日最新资讯28at.com

params_list = [(f"user_{i}", f"user_{i}@example.com") for i in range(1, 4)]for username, email in params_list:    payload = {"username": username, "email": email}    print(f"Sending request with payload: {payload}")    # 实际使用时这里会是发送请求的代码,例如 `requests.post(url, jsnotallow=payload)`输出示例:Sending request with payload: {'username': 'user_1', 'email': 'user_1@example.com'}Sending request with payload: {'username': 'user_2', 'email': 'user_2@example.com'}Sending request with payload: {'username': 'user_3', 'email': 'user_3@example.com'}

场景2: 响应数据分析

# 假设我们已经获取到了一个包含用户信息的API响应y1Q28资讯网——每日最新资讯28at.com

import requestsresponse = requests.get("https://api.example.com/users")response_json = response.json()# 提取所有用户的IDuser_ids = [user['id'] for user in response_json['data']]print(f"Extracted User IDs: {user_ids}")输出示例:Extracted User IDs: [1, 2, 3, 4, 5]

场景3: 断言优化

# 假设我们要验证返回的用户角色集合是否正确y1Q28资讯网——每日最新资讯28at.com

expected_roles = {"admin", "editor"}response = requests.get("https://api.example.com/roles")actual_roles = {role['name'] for role in response.json()}assert expected_roles == actual_roles, f"Expected roles {expected_roles} but got {actual_roles}"print("Roles assertion passed.")输出示例:Roles assertion passed.

或者如果断言失败,则会输出错误信息。y1Q28资讯网——每日最新资讯28at.com

场景4: 结果筛选与异常检测

# 模拟一组API响应y1Q28资讯网——每日最新资讯28at.com

responses = [{"status_code": 200}, {"status_code": 404}, {"status_code": 200}]failed_responses = [response for response in responses if response["status_code"] != 200]if failed_responses:    print(f"Failed responses detected: {failed_responses}")else:    print("All requests succeeded.")输出示例:Failed responses detected: [{'status_code': 404}]

场景5: 测试数据准备

# 生成用于测试的数据y1Q28资讯网——每日最新资讯28at.com

test_data_gen = (    {"id": idx, "name": f"Test_{idx}", "status": "active" if idx % 2 == 0 else "inactive"}    for idx in range(1, 6))for data in test_data_gen:    print(f"Generated test data: {data}")    # 在实际使用中,这里会是使用这些数据进行API请求的代码输出示例:Generated test data: {'id': 1, 'name': 'Test_1', 'status': 'inactive'}Generated test data: {'id': 2, 'name': 'Test_2', 'status': 'active'}Generated test data: {'id': 3, 'name': 'Test_3', 'status': 'inactive'}Generated test data: {'id': 4, 'name': 'Test_4', 'status': 'active'}Generated test data: {'id': 5, 'name': 'Test_5', 'status': 'inactive'}

本文链接:http://www.28at.com/showinfo-26-87038-0.htmlPython 推导式在接口自动化里的运用

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 每个开发者都必须要知道的,三个JS高效运算符:?. || ?? || ??=

下一篇: 我们一起聊聊如何编写异步运行时通用库?

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 2023 年的 Node.js 生态系统

    随着技术的不断演进和创新,Node.js 在 2023 年达到了一个新的高度。Node.js 拥有一个庞大的生态系统,可以帮助开发人员更快地实现复杂的应用。本文就来看看 Node.js 最新的生
  • K8S | Service服务发现

    一、背景在微服务架构中,这里以开发环境「Dev」为基础来描述,在K8S集群中通常会开放:路由网关、注册中心、配置中心等相关服务,可以被集群外部访问;图片对于测试「Tes」环境或者
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 一文搞定Java NIO,以及各种奇葩流

    大家好,我是哪吒。很多朋友问我,如何才能学好IO流,对各种流的概念,云里雾里的,不求甚解。用到的时候,现百度,功能虽然实现了,但是为什么用这个?不知道。更别说效率问题了~下次再遇到,
  • 得物宠物生意「狂飙」,发力“它经济”

    作者|花花小萌主近日,得物宣布正式上线宠物鉴别,通过得物App内的“在线鉴别”,可找到鉴别宠物的选项。通过上传自家宠物的部位细节,就能收获拥有专业资质认证的得物鉴
  • 余承东:AI大模型技术的发展将会带来下一代智能终端操作系统的智慧体验

    8月4日消息,2023年华为开发者大会(HDC.Together)今天正式开幕,华为发布HarmonyOS 4、全新升级的鸿蒙开发套件、HarmonyOS Next开发者预览版本等一系列
  • 荣耀Magicbook V 14 2021曙光蓝版本正式开售,拥有触摸屏

    荣耀 Magicbook V 14 2021 曙光蓝版本正式开售,搭载 i7-11390H 处理器与 MX450 显卡,配备 16GB 内存与 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 键盘键程、
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top