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

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

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

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

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

列表推导式

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

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

[expression for item in iterable if condition]

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

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

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

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

字典推导式

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

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

{key_expression: value_expression for item in iterable if condition}

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

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

集合推导式

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

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

{expression for item in iterable if condition}

生成器推导式

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

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

(expression for item in iterable if condition)

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

场景1: 动态参数构造

# 假设我们需要测试用户注册接口,每个用户有不同的用户名和邮箱Sdt28资讯网——每日最新资讯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响应Sdt28资讯网——每日最新资讯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: 断言优化

# 假设我们要验证返回的用户角色集合是否正确Sdt28资讯网——每日最新资讯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.

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

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

# 模拟一组API响应Sdt28资讯网——每日最新资讯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: 测试数据准备

# 生成用于测试的数据Sdt28资讯网——每日最新资讯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高效运算符:?. || ?? || ??=

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

标签:
  • 热门焦点
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 容量越大越不坏?24万块硬盘故障率报告公布 这些产品零故障

    8月5日消息,云存储服务商Backblaze发布了最新的硬盘故障率报告,年故障率有所上升。Backblaze发布的硬盘季度统计数据,其中包括故障率等重要方面。这些结
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 如何使用JavaScript创建一只图像放大镜?

    译者 | 布加迪审校 | 重楼如果您曾经浏览过购物网站,可能遇到过图像放大功能。它可以让您放大图像的特定区域,以便浏览。结合这个小小的重要功能可以大大改善您网站的用户体验
  • 每天一道面试题-CPU伪共享

    前言:了不起:又到了每天一到面试题的时候了!学弟,最近学习的怎么样啊 了不起学弟:最近学习的还不错,每天都在学习,每天都在进步! 了不起:那你最近学习的什么呢? 了不起学弟:最近在学习C
  • 东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼‍‍‍‍‍‍‍‍‍‍东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一
  • 华为发布HarmonyOS 4:更好玩、更流畅、更安全

    在8月4日的华为开发者大会2023(HDC.Together)大会上,HarmonyOS 4正式发布。自2019年发布以来,HarmonyOS一直以用户为中心,经历四年多的发展HarmonyOS已
  • AMD的AI芯片转单给三星可能性不大 与台积电已合作至2nm制程

    据 DIGITIMES 消息,英伟达 AI GPU 出货逐季飙升,接下来 AMD MI 300 系列将在第 4 季底量产。而半导体业内人士表示,近日传出 AMD 的 AI 芯片将转单给
  • “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主“七王”在群里介绍一些刷单赚
Top