pytest测试range内置函数

news/2025/11/16 16:08:00/文章来源:https://www.cnblogs.com/xqqlyx/p/19228344
pytest测试range内置函数
点击查看代码
import pytest# ------------------------------
# 一、基础操作:正序序列测试用例
# ------------------------------
@pytest.mark.parametrize("start, end, step, expected",[# 默认步长(step=1)(None, 5, 1, [0, 1, 2, 3, 4]),  # 省略start,从0开始(1, 6, 1, [1, 2, 3, 4, 5]),     # 明确start和end# 列表索引对齐(0, len(["a", "b", "c"]), 1, [0, 1, 2]),  # 匹配列表长度的索引# 自定义正步长(间隔生成)(0, 10, 2, [0, 2, 4, 6, 8]),    # 步长2:偶数序列(3, 15, 3, [3, 6, 9, 12]),      # 步长3:3的倍数序列(1, 20, 5, [1, 6, 11, 16]),     # 步长5:间隔5递增],
)
def test_range_forward(start, end, step, expected):"""测试正序序列生成(start ≤ end,step为正)"""# 处理省略start的情况(range默认start=0)if start is None:result = list(range(end))else:result = list(range(start, end, step))assert result == expected# ------------------------------
# 二、进阶操作:倒序序列测试用例
# ------------------------------
@pytest.mark.parametrize("start, end, step, expected",[# 基础倒序(step=-1)(10, 0, -1, list(range(10, 0, -1))),  # 10→1:完整倒序(5, -1, -1, [5, 4, 3, 2, 1, 0]),     # 5→0:包含0# 自定义倒序步长(间隔递减)(10, -1, -2, [10, 8, 6, 4, 2, 0]),   # 步长-2:偶数倒序(15, 2, -3, [15, 12, 9, 6, 3]),      # 步长-3:3的倍数倒序(7, 0, -4, [7, 3]),                  # 步长-4:大幅递减],
)
def test_range_backward(start, end, step, expected):"""测试倒序序列生成(start > end,step为负)"""result = list(range(start, end, step))assert result == expected# ------------------------------
# 三、边界场景:特殊序列测试用例
# ------------------------------
@pytest.mark.parametrize("start, end, step, expected",[# 空序列场景(3, 1, 1, []),    # 正序但start>end(1, 3, -1, []),   # 倒序但start<end(5, 5, 1, []),    # start=end(左闭右开,无元素)(0, 0, -1, []),   # 倒序时start=end# 单元素序列(5, 6, 1, [5]),   # 正序:end=start+step(8, 7, -1, [8]),  # 倒序:end=start+step# 对齐固定长度(指定元素个数)(0, 10, 2, [0, 2, 4, 6, 8]),      # 5个元素(正序)(12, 0, -3, [12, 9, 6, 3]),       # 4个元素(倒序)],
)
def test_range_boundary(start, end, step, expected):"""测试边界场景:空序列、单元素序列、固定长度序列"""result = list(range(start, end, step))assert result == expected# ------------------------------
# 四、实用场景:结合其他函数测试用例
# ------------------------------
def test_range_with_map():"""测试range结合map生成规律列表(平方序列)"""result = list(map(lambda x: x*x, range(1, 11)))expected = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]assert result == expecteddef test_range_with_filter():"""测试range结合filter生成筛选列表(偶数序列)"""result = list(filter(lambda x: x%2 == 0, range(10)))expected = [0, 2, 4, 6, 8]assert result == expecteddef test_range_reverse_traverse():"""测试range用于反向遍历(列表/字符串)"""# 反向遍历列表lst = ["a", "b", "c", "d"]reverse_lst = [lst[i] for i in range(len(lst)-1, -1, -1)]assert reverse_lst == ["d", "c", "b", "a"]# 反向遍历字符串s = "hello"reverse_s = "".join([s[i] for i in range(len(s)-1, -1, -1)])assert reverse_s == "olleh"def test_range_matrix_index():"""测试range生成多维度矩阵索引"""# 生成2行3列的索引对indices = []for i in range(2):for j in range(3):indices.append((i, j))expected = [(0,0), (0,1), (0,2), (1,0), (1,1), (1,2)]assert indices == expected# ------------------------------
# 五、局限性测试(验证不支持的场景)
# ------------------------------
def test_range_float_error():"""测试range不支持浮点数参数(应抛出TypeError)"""with pytest.raises(TypeError):range(0.1, 1.0, 0.2)  # 浮点数start/end/step不合法def test_range_zero_step_error():"""测试range步长为0(应抛出ValueError)"""with pytest.raises(ValueError):range(1, 5, 0)  # step=0不允许

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/967164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPS---功能设置

WPS作为一款国内开发的办公软件,用确实好用,但是恶心也确实挺恶心的,就比如这个必须登录才能使用的功能,简直就是反人类。 操作:点击【登录】旁边的【设置】选择【配置和修复工具】然后点击【高级】功能定制:关闭…

自动化测大样例

省流: for((i=1;i<=10;i++)) do g++ T1.cpp -std=c++14 -Wall -Wextra -O a.exe cp ex_edit$i.in edit.in ./a.exe diff -s -Z ex_edit$i.ans edit.out done#include<bits/stdc++.h> #include <unistd.h&…

[Debug记录] 分布式实验-FTP编程

分布式课程学习JavaSocket和TCP/UDP,第一次实验要求基于Java Socket TCP和UDP实现一个简易的网络文件服务程序,包含服务器端FileServer和客户端FileClient。完成实验的过程中遇到一些比较典型的bug,记录一下。 用来…

2025年当下行业内知名的旧房翻新企业排名与推荐

摘要 旧房翻新行业在2025年迎来快速发展,受城市化进程加速和住房老龄化影响,市场需求持续增长,预计年增长率达15%以上(数据来源:中国建筑装饰协会2025年报告)。本文基于行业调研、用户口碑和专业技术评估,精选排…

2025年国内旧房翻新公司综合实力排行榜TOP10推荐

摘要 随着城市化进程加速和居民生活品质提升,2025年旧房翻新行业迎来爆发式增长,市场规模预计突破8000亿元。旧房翻新不仅解决老房安全隐患,更是提升居住舒适度和资产价值的重要途径。本文基于企业实力、技术水准、…

现今国内口碑好的旧房翻新企业排行

摘要 随着城市化进程加速和居民生活品质提升,2025年旧房翻新行业迎来爆发式增长。据统计,国内旧房翻新市场规模已突破万亿,年均增长率达18.7%。本文基于用户口碑、施工质量、服务体验等维度,综合评出现今国内十大旧…

Linux服务器编程实践60-双向管道:socketpair函数的完成与应用场景

Linux服务器编程实践60-双向管道:socketpair函数的完成与应用场景pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

前端从0到1实战】第3篇:拒绝插件,手写一个原生模态弹窗 (Modal)

【前端从0到1实战】第3篇:拒绝插件,手写一个原生模态弹窗 (Modal) 在现代 Web 开发中,模态弹窗(Modal)是最常见的交互组件之一。很多新手会选择直接引入第三方插件,但其实手写一个原生 Modal 是理解 HTML 结构定…

20232413 2025-2026-1 《网络与系统攻防技术》实验五实验报告

一.实验内容 1.搜索域名和ip信息 2.获取好友IP地址及其地理位置 3.使用nmap扫描靶机进行漏洞分析 4.查询个人网上信息和学习高级搜索技能 二.实验过程 2.1 DNS 域名信息查询(以baidu.com为例) 2.1.1whois 查询 DNS 注…

循环数组下一个更大元素:从错误到精通(含2种解法+同类型扩展)

循环数组下一个更大元素:从错误到精通(含2种解法+同类型扩展)在字符串、数组类算法中,“循环结构”是高频考点——尤其是“循环数组的下一个更大元素”,既考察对单调栈的理解,又要求处理“绕回开头”的特殊逻辑。…

随机化数论算法总结

好吧这个名字很蠢() 1 Miller_Rabin 作用试判断 \(10^{18}\) 级别或以上的数是否是质数,显然此时 \(O(\sqrt n)\) 的朴素算法是无法使用的。 1.1 费马小定理 当 \(p\) 为质数时,对于任意整数 \(a\),有 \(a^{p-1}\…

20232422 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232422 龙浩然 2025-2026-1 《网络与系统攻防技术》实验五实验报告一、实验内容DNS信息搜集:查询指定域名的注册信息、对应IP和地理位置。 网络抓包定位:通过Wireshark抓取qq好友IP,解析其地理位置。 靶机扫描探测…

完整教程:【数据迁移】HBase Bulkload批量加载原理

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

【AI智能体开发】什么是LLM?如何在本地搭建属于自己的Ai智能体? - 详解

【AI智能体开发】什么是LLM?如何在本地搭建属于自己的Ai智能体? - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

20232422 龙浩然 2025-2026-1 《网络与系统攻防技术》实验五实验报告

20232422 龙浩然 2025-2026-1 《网络与系统攻防技术》实验五实验报告一、实验内容DNS信息搜集:查询指定域名的注册信息、对应IP和地理位置。 网络抓包定位:通过Wireshark抓取qq好友IP,解析其地理位置。 靶机扫描探测…

DL 1 深度学习简介 张量tensor操作

DL 1 深度学习简介 张量tensor操作1.深度学习简介 学习视频:https://www.bilibili.com/video/BV1c5yrBcEEX/?spm_id_from=333.337.search-card.all.click&vd_source=0a4fe9884700974ee1043a65993f87fb 1.1 概念…

Spring Cloud Alibaba + RocketMQ

RocketMQ 在微服务的世界里,服务间的消息就像快递包裹,如果没有高效可靠的传递方式,小摊位之间的信息就容易丢失或者延迟。这时候,你就需要 RocketMQ——微服务界的“快递小能手”,帮你高效、安全、准时地传递每一…

bpftrace报错:definitions.h:17:3: error: unknown type name pid_t

bpftrace报错:definitions.h:17:3: error: unknown type name pid_t使用bpftrace时报错definitions.h:15:3: error: unknown type name pid_t definitions.h:16:3: error: unknown type name pid_t definitions.h:17:…

mybatis_generator

点击查看import lombok.Data;import java.sql.*; import java.util.*;public class CodeGenerator {// 数据库连接配置private static final String DB_URL = "jdbc:mysql://localhost:3306/test";private s…