版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python测试开发面试题及详细答案(实战版)一、Python基础核心面试题1、简述Python中列表和元组的区别,以及各自的使用场景答案:核心区别主要有三点:1.可变性:列表(list)是可变序列,支持增删改查操作;元组(tuple)是不可变序列,定义后无法修改元素。2.语法形式:列表用[]定义,元素可重复、可修改;元组用()定义,单元素元组必须加逗号,如(1,)。3.性能与存储:元组结构更简单、占用内存更少、访问速度更快;列表因为支持动态扩容,内存开销相对更大。使用场景:列表:适用于数据需要频繁修改、新增、删除的场景,比如存储测试用例列表、接口请求参数集合、临时数据缓存等。元组:适用于数据固定、禁止篡改的场景,比如接口返回的固定状态码、数据库配置参数、测试环境常量数据,同时元组可作为字典的键,列表不可以。2、Python深拷贝和浅拷贝的区别,实际测试工作中什么场景会用到?答案:浅拷贝:只复制对象的顶层数据,对象内部的嵌套子对象仅复制引用,新旧对象的嵌套数据会相互影响。常见的浅拷贝方式:列表切片、copy()方法、dict.copy()。深拷贝:递归复制对象的所有层级数据,完全生成一个独立的新对象,新旧对象的所有数据完全隔离,互不影响。使用copy模块的deepcopy()方法实现。实战场景:在接口测试中,我们常会复用一套基础请求参数,若参数是多层嵌套字典,直接赋值或浅拷贝后,修改其中一个用例的参数,会导致其他用例参数被篡改,引发用例执行失败。此时必须使用深拷贝,保证每个测试用例的参数独立互不干扰。3、Python中is和==的区别答案:==是数值比较,判断两个对象的内容、值是否相等,默认调用对象的__eq__方法。is是身份比较,判断两个对象是否是同一个内存地址的对象,即id值是否完全一致。补充实战细节:Python有小整数缓存机制,-5~256之间的整数会常驻内存,这个区间内的整数is判断会返回True,超出区间则为False,而==只要数值相等就会返回True。日常测试校验中,绝大多数场景用==,仅需要判断是否为同一对象时用is。4、简述Python装饰器的作用,手写一个通用装饰器答案:装饰器本质是闭包函数,作用是在不修改原有函数代码、不改变函数调用方式的前提下,给函数新增额外功能,符合代码开闭原则。测试开发中常用场景:接口用例日志记录、用例执行耗时统计、异常重试、权限校验、接口签名封装等。通用装饰器代码:PlainText
deffunc_wrapper(func):
defwrapper(*args,**kwargs):
#执行函数前的拓展逻辑
print("开始执行测试函数")
res=func(*args,**kwargs)
#执行函数后的拓展逻辑
print("测试函数执行结束")
returnres
returnwrapper
#调用示例
@func_wrapper
deftest_api():
print("执行接口测试用例")
test_api()二、测试开发核心理论与Python实操1、什么是断言?Python自动化测试中常用的断言方式有哪些?答案:断言是自动化测试的核心校验逻辑,用于判断程序实际运行结果是否等于预期结果,若不一致则抛出异常,判定用例失败。Python常用断言方式:1.原生assert断言:语法简单,无需依赖第三方库,适合简易校验,格式:assert条件,失败提示信息。示例:assertres["code"]==200,"接口请求失败"2.unittest框架断言:内置丰富断言方法,如assertEqual、assertNotEqual、assertIn、assertTrue、assertFalse,适合单元测试、接口测试。3.pytest框架断言:直接复用原生assert,语法更简洁,报错信息更详细,是目前主流自动化测试断言方式。2、pytest和unittest框架的核心区别,工作中如何选型?答案:核心区别:1.语法规范:unittest是Python内置框架,强制用例类、用例方法必须遵循固定命名规范,代码冗余度高;pytest是第三方框架,兼容unittest用例,语法简洁灵活,无强制编码约束。2.用例执行:pytest支持用例筛选、分组、跳过、重试,自带丰富的插件体系(报告、重试、多线程执行等);unittest原生功能简陋,需要额外封装拓展功能。3.固件机制:pytest的fixture固件灵活,支持作用域自定义(函数、类、模块、会话级),可数据共享、参数化;unittest的setUp/tearDown固件作用域固定,灵活性差。选型原则:新项目、接口自动化、UI自动化、规模化测试项目优先用pytest;老旧项目维护、简单单元测试、无需复杂拓展功能的场景可沿用unittest。3、pytestfixture的作用域和优先级,实际使用场景答案:fixture是pytest核心固件,用于封装测试前置、后置操作,支持数据返回、参数传递,替代传统的setUp/tearDown。五大作用域(执行范围从大到小):session(整个测试会话)>module(单个模块文件)>class(测试类)>function(单个用例,默认)>instance。优先级:作用域越大,初始化越早,销毁越晚;同作用域下,先定义先执行。实战场景:session级:全局登录、数据库连接、接口域名初始化,整个测试项目只执行一次;module级:单个接口模块的前置数据初始化;function级:每个用例独立的参数准备、数据清理。三、接口自动化测试专项面试题1、使用Python做接口自动化的核心流程是什么?答案:1.环境准备:搭建测试环境,确认接口文档、请求地址、请求方式、参数、鉴权规则;2.框架搭建:基于pytest搭建自动化框架,封装基础请求工具类(get/post/put/delete)、日志、报告、异常处理;3.数据处理:整理测试用例数据,可通过yaml、excel、json文件管理用例,实现数据和代码分离;4.鉴权封装:处理接口token、cookie、签名等鉴权逻辑,全局复用;5.编写用例:按照接口模块编写测试用例,覆盖正常场景、异常参数、边界值、权限场景;6.结果断言:校验接口状态码、返回字段、数据内容、业务逻辑正确性;7.后置处理:清理测试数据、关闭数据库/接口连接,避免数据污染;8.批量执行与报告:批量运行用例,生成可视化测试报告,统计通过率、失败用例。2、requests库中get和post请求的区别,参数传递方式答案:核心区别:1.参数位置:get请求参数拼接在url后面,公开可见;post请求参数放在请求体中,相对隐蔽;2.数据长度:get请求有url长度限制,无法传输大量数据;post无长度限制,支持文件、大数据传输;3.缓存特性:get请求会被浏览器、代理服务器缓存;post请求默认不缓存;4.应用场景:get用于查询数据(查),post用于提交、新增、修改数据(增改)。参数传递:get请求:参数用params传递,requests.get(url,params=字典参数)post请求:表单参数用data传递,json格式参数用json传递(目前接口主流json格式)3、接口测试中遇到token过期如何处理?自动化框架如何适配?答案:手动测试时token过期会直接请求失败,自动化框架中需要做容错处理,核心方案:1.封装全局获取token方法:单独写一个接口请求函数,专门获取登录token,配置session级fixture,测试启动时自动获取并存储token;2.增加token过期校验:在通用请求工具类中,拦截接口返回结果,若识别到token过期、无效的状态码/提示,自动触发重新登录,刷新token后重试当前请求;3.缓存token有效期:记录token获取时间,结合后端token过期时长,提前自动刷新,避免用例执行中途失效;4.异常重试机制:通过装饰器或pytest重试插件,对token失效的失败用例自动重试,保证用例稳定性。4、如何解决接口自动化用例依赖问题?答案:接口依赖是指后序接口需要前序接口的返回数据作为参数(比如新增用户后,用用户ID查询、修改用户),实战解决方案:1.全局变量存储:通过全局字典存储前置接口的返回数据,供后续用例调用,适合简单依赖场景;2.fixture数据共享:利用pytest的fixture返回数据,不同用例通过调用fixture获取依赖数据,支持作用域控制;3.文件存储:将前置接口的核心数据写入yaml/json文件,持久化存储,所有模块均可读取;4.数据库读取:核心依赖数据直接从测试库查询,保证数据准确性;5.用例执行顺序管控:通过pytest排序插件或模块化分层,保证前置用例优先执行,禁止跨层级乱序执行。四、异常处理与调试面试题1、Pythontry-except异常捕获机制,自动化测试中如何合理使用?答案:基础语法:try包裹可能报错的代码,except捕获指定异常并处理,else无异常执行,finally无论是否报错都会执行。测试开发使用原则:不滥用万能捕获,精准捕获异常,避免隐藏bug。实战场景:1.接口请求异常:捕获连接超时、网络异常、服务器错误,记录报错日志,避免单条用例报错终止全部执行;2.数据解析异常:捕获json解析失败、键值不存在异常,自定义报错信息,快速定位问题;3.后置清理异常:在finally中执行测试数据清理、连接关闭,保证测试环境干净。2、自动化用例偶尔失败(偶现bug)如何排查?答案:偶现失败是自动化常见问题,核心排查步骤:1.查看详细日志:检查请求参数、响应结果、报错信息,确认是参数问题、网络问题还是业务问题;2.排查数据污染:测试用例执行后未清理数据,导致下次执行数据冲突、重复数据报错;3.排查执行顺序:用例执行顺序不固定,依赖前置数据未生成或被占用;4.排查网络与服务:接口超时、服务器波动、并发请求冲突导致偶现失败;5.排查边界逻辑:并发场景、空值、特殊字符等边界场景偶现触发bug;6.本地复现:单独执行失败用例,固定测试数据,逐步定位根因,最终优化用例或提测bug。五、进阶框架与工程化面试题1、如何实现测试用例数据和代码分离?有哪些常用方式?答案:数据代码分离是自动化框架规范化的核心,目的是修改测试数据无需改动代码,提升维护效率。常用方式:1.YAML文件:格式简洁、层级清晰,适合存储接口用例、配置信息、环境参数,是目前主流方案;2.Excel文件:适合新手,可视化强,适合大批量业务用例录入;3.JSON文件:格式标准,解析速度快,适合结构化接口参数数据;4.数据库存储:适合超大规模用例、需要动态更新用例的项目。框架实现:通过Python读取对应文件数据,结合pytest参数化功能,循环加载数据生成多条测试用例。2、简述Allure测试报告的使用优势和集成方式答案:使用优势:1.报告美观清晰,区分通过、失败、跳过、异常用例,展示详细执行日志、请求响应数据;2.支持用例分层、模块分类、优先级标注,便于统计模块通过率;3.支持失败用例截图、日志附件,快速定位问题;4.轻量灵活,适配pytest,可集成CI/CD流水线。集成方式:1.安装allure-pytest插件;2.执行用例时指定报告存储目录,生成临时数据;3.通过allure命令将临时数据生成可视化HTML报告;4.可结合jenkins实现自动化执行、自动生成报告、邮件推送报告。3、你理解的测试开发工作是什么?Python在测试工作中的核心价值?答案:测试开发不只是写自动化用例,核心是提升测试效率、保障测试质量、赋能测试团队。主要工作包含:搭建自动化测试框架、编写接口/UI自动化用例、开发测试工具、优化测试流程、对接CI/CD持续集成、推进测试规范化。Python的核心价值:1.语法简洁、开发效率高,入门成本低,适合快速搭建测试框架、编写脚本;2.生态丰富,requests、pytest、selenium、openpyxl等库完美适配各类测试场景;3.灵活性强,可实现接口自动化、UI自动化、性能脚本、数据处理、工具开发全场景覆盖;4.适配工程化,可对接流水线、数据库、消息队列,满足企业级测试需求。六、手写代码实操面试题(高频)1、手写一个去重并保持原有顺序的函数答案:PlainText
defdeduplicate_list(data_list):
new_list=[]
foritemindata_list:
ifitemnotinnew_list:
new_list.append(item)
returnnew_list
#测试
print(deduplicate_list([1,2,2,3,1,4]))#输出[1,2,3,4]2、手写简单的接口请求工具类(封装get/post)答案:PlainText
importrequests
classApiRequest:
def__init__(self):
self.session=requests.Session()
#统一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级会计职称考试财务管理综合测试卷及答案
- 统计师资格考试统计咨询知识点巩固习题及答案
- 2026年公共卫生管理类资格考试环境卫生学专项习题及答案
- 2026年护理心理学模拟试题及答案
- 2026年电子商务师考试电子商务物流与供应链管理习题集及答案
- 江苏省护士资格考试感染控制护理学知识试题及答案
- 公共卫生管理资格考试流行病学备考习题及答案
- 安全工程师考试安全生产管理专项训练题库及答案
- 天津市心理咨询师考试心理咨询与治疗伦理备考习题及答案
- 2026年消防工程师考试押题卷附答案(冲刺版)
- GJB9764-2020可编程逻辑器件软件文档编制规范
- 医学美容科室介绍
- 口腔器械规范打包流程与标准
- 烤烟种植土地流转协议书
- DB62T 3161-2019 高原旱区园林绿化养护及验收标准
- 大学生职业规划大赛《通信工程专业》生涯发展展示
- 矩阵理论 课件 第4章第5节凯莱-哈密顿定理与矩阵的最小多项式
- 幼儿园安全家委会
- 《公司的组织机构》课件
- 贵州省贵阳市第二十八中学2024-2025学年度八年级上学期期中质量监测语文试卷
- 农村土地使用权转让协议书
评论
0/150
提交评论