版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python自动化测试面试题及详细答案(真实面试版)一、Python基础高频面试题(自动化必问)1、Python列表和元组的区别?工作中分别怎么用?参考答案:首先核心区别:列表是可变的,元组是不可变的。1.列表list:可增删改查,支持append、pop、remove等方法,内存占用稍高2.元组tuple:定义后不能修改元素,没有增删改方法,内存更轻量、访问更快工作使用场景:动态变化的数据用列表,比如存储接口返回的列表数据、测试用例集合、需要循环修改的参数。固定不变的数据用元组,比如接口固定参数、配置常量、坐标点位、文件路径组合,防止代码运行中被意外修改。2、字典的key可以是哪些类型?为什么列表不能当key?参考答案:字典key必须是不可变类型,常用的有字符串、数字、元组、布尔值。列表是可变类型,运行中可以修改元素,字典的哈希表存储逻辑要求key哈希值固定,如果key变了,字典就找不到对应数据,所以列表不能做key。简单说:可变类型不能哈希,不能当字典键;不可变类型可哈希,可以当键。3、Python深拷贝和浅拷贝的区别?自动化中什么时候会踩坑?参考答案:浅拷贝:只拷贝外层对象,内层嵌套对象还是共用同一个内存地址。修改嵌套数据,原数据和拷贝数据都会变。深拷贝:完全拷贝所有层级数据,新旧数据完全独立,互不影响。工作坑点:自动化测试中,我们经常复用测试数据模板、接口请求参数模板。如果用浅拷贝,修改其中一条用例的参数,会把所有用例的参数都改乱,导致批量用例执行失败。复杂嵌套的测试数据,我都会用deepcopy深拷贝。4、for循环和while循环的使用场景?循环中break和continue的区别?参考答案:for循环:适合已知次数、遍历序列,比如遍历测试用例、遍历接口返回列表、遍历文件数据,自动化中用得最多。while循环:适合未知次数、条件循环,比如轮询接口状态、等待页面元素加载、重试失败的接口请求。break:直接终止整个循环,跳出循环体。continue:只跳过当前一次循环,直接进入下一次,不会终止整体循环。5、Python函数参数*args和**kwargs的作用?自动化中怎么用?参考答案:*args:接收不定长位置参数,打包成元组。**kwargs:接收不定长关键字参数,打包成字典。自动化场景:封装通用请求方法、通用断言方法、通用日志方法时使用。比如封装requests请求,不同接口参数数量不一样,用kwargs可以兼容所有接口的入参,不用频繁修改函数形参,代码通用性更强。二、Python自动化核心基础面试题1、自动化测试中,为什么优先用Python?参考答案:1.语法简单、开发效率高,测试人员上手快,不用写冗余代码,适合快速搭建自动化脚本和框架。2.生态齐全,接口、UI、爬虫、性能测试都有成熟库,requests、selenium、pytest、allure直接开箱即用。3.兼容性强,可对接jenkins、数据库、Redis、MQ,方便做持续集成、全链路自动化测试。4.脚本维护成本低,团队协作更方便,适合迭代快的互联网项目。2、自动化测试和手工测试的区别?自动化不能替代什么?参考答案:自动化适合:重复、机械、回归测试、大批量用例、兼容性测试、轮询校验,效率高、零失误、可持续执行。手工适合:探索性测试、UI美观校验、用户体验、异常场景随机测试、新功能第一轮测试。自动化完全替代不了:体验类测试、随机性bug、界面视觉问题、新增复杂业务的首轮测试。自动化核心是解放回归人力,不是替代手工。3、你写的自动化脚本,如何保证稳定性?参考答案:这是面试高频重点,我工作中主要做这几点:1.所有元素、接口请求增加等待,不用固定死睡,优先隐式等待、显式等待,避免网络、页面加载时差导致的报错。2.封装重试机制,接口超时、偶尔失败的用例,自动重试1-2次,过滤偶然问题。3.用例独立,每条用例前置独立准备数据,用例之间互不影响,不会因为上一条失败导致批量失败。4.精准断言,不只断言状态码,同时校验核心字段、数据格式、业务逻辑,避免假通过。5.增加日志、异常捕获,报错直接打印详细信息,方便定位问题。4、Python异常处理try-except怎么用?自动化中为什么要加异常捕获?参考答案:基础逻辑:try放正常执行的代码,except捕获指定异常,else无异常执行,finally无论成败都会执行。自动化使用场景:如果不加异常捕获,一条用例报错会直接终止整个脚本运行,后面所有用例都跑不了。加了try-except,可以单条用例失败记录报错、保存截图/日志,继续执行下一条用例,保证批量执行不中断。同时可以精准区分是代码bug、环境问题还是业务bug。三、接口自动化测试面试题(重中之重)1、requests库常用请求方法及核心参数?参考答案:常用方法:get、post、put、delete,对应接口四大请求方式。核心参数:url:接口地址params:get请求拼接的url参数data:表单格式请求参数json:json格式请求参数,现在后端接口最常用headers:请求头,存放token、cookie、内容格式timeout:超时时间,防止请求卡死verify=False:关闭https证书报错2、接口测试中token怎么处理?如何实现全局携带?参考答案:我工作中的标准做法:1.单独封装获取登录token的接口,作为公共前置方法。2.获取到token后,存入全局变量或配置文件。3.封装统一的requests请求工具类,所有接口请求自动读取全局token,放入headers,不用每个用例手动传。4.增加token过期判断,如果过期自动重新获取,保证脚本长期稳定运行。3、接口断言你一般断言哪些内容?只断言状态码200可以吗?参考答案:只断言200是新手写法,非常不严谨,200只能代表请求通了,不代表业务正常。我日常断言分四层:1.基础断言:响应状态码是否符合预期2.业务码断言:判断code码、success字段是否为true3.核心数据断言:返回的关键字段值、数据长度、字段类型是否正确4.异常场景断言:参数错误、权限不足、超时场景,断言对应错误提示和状态码4、接口依赖怎么处理?比如查询接口需要登录接口的返回数据参考答案:三种常用落地方式,根据场景选择:1.用例前置依赖:pytest的fixture前置执行,先执行登录获取token和用户id,传给后续接口。2.全局变量存储:前置接口返回的关键数据存入全局变量,后续用例直接调用。3.参数化传递:复杂多依赖场景,用yaml/excel管理依赖参数,实现数据解耦。核心原则:保证前置接口执行成功后,再执行依赖用例,同时做好数据复用。5、接口报错超时、连接失败、500、401、403分别是什么原因?参考答案:超时:网络慢、服务器卡顿、接口逻辑卡死、参数数据量太大连接失败:接口地址错误、服务器宕机、端口不通、网络拦截500:服务器内部错误,后端代码bug、数据库异常、参数处理异常401:未登录、token失效、token错误,无身份凭证403:登录成功,但权限不足,当前账号没有访问该接口的权限四、pytest测试框架面试题(重点)1、pytest相比unittest的优势?参考答案:1.语法更简洁,不用强制写类和self,普通函数就能写用例,代码更轻便。2.支持灵活的前置后置fixture,比unittest的setUp/tearDown更细粒度,可以全局、模块、类、用例级别控制。3.原生支持参数化,数据驱动更方便。4.插件生态丰富,allure报告、失败重跑、多线程执行、用例排序都有成熟插件。5.执行方式灵活,可单独执行单条、单个文件、整个目录用例。2、pytestfixture的作用及scope参数区别?参考答案:fixture是pytest的核心,用来封装测试前置、后置、公共数据、公共方法,替代传统的前置后置函数,实现用例解耦。scope四个级别:function:默认级别,每条用例执行一次前置后置class:每个测试类执行一次module:每个py文件执行一次session:整个测试会话执行一次,适合全局登录、全局初始化3、pytest如何实现数据驱动参数化?参考答案:主要用@pytest.mark.parametrize装饰器。可以直接写列表参数,也可以读取excel、yaml、json文件中的测试数据,批量传入测试用例,一条代码执行多组不同参数的测试场景,实现数据和脚本分离,方便维护大量用例。4、自动化测试报告用什么?allure报告怎么集成?参考答案:我工作中用allure,比默认报告美观、详细、支持分类、失败截图、日志展示,适合交付和复盘。集成步骤:1.本地安装allure命令行工具和pytest-allure插件2.执行用例时生成allure原始数据文件夹3.通过命令行把原始数据生成html可视化报告4.结合jenkins实现自动生成报告、自动推送结果五、UI自动化(Selenium)面试题1、Selenium八大定位器及常用场景?参考答案:常用优先顺序:id>name>xpath>css,这四个工作中够用。id/name:页面唯一固定属性,稳定性最高,优先使用。xpath:适配绝大多数元素,支持绝对路径和相对路径,适合无唯一属性的元素。css:定位速度最快,简洁高效,适合样式定位。其余link_text、partial_link_text、tag_name、class_name作为辅助定位。2、UI自动化元素找不到的常见原因及解决办法?参考答案:高频原因和解决方案:1.页面未加载完成:加显式等待WebDriverWait,等待元素可见、可点击再操作,不用time.sleep2.元素定位写错:xpath层级错误、属性动态变化,改用相对xpath、模糊匹配3.页面存在iframe:必须先切换iframe,再定位内部元素4.窗口跳转新标签页:需要切换窗口句柄5.元素被遮挡、不可见:等待页面渲染完成,或处理弹窗、遮罩层3、显式等待和隐式等待的区别?工作中用哪个?参考答案:隐式等待:全局生效,设置一次所有元素都适用,超时时间固定,灵活性差。显式等待:针对单个元素单独设置,等待元素指定状态(可见、可点击),精准高效,稳定性更高。工作中我优先用显式等待,隐式等待做辅助,坚决少用固定死睡,避免脚本卡顿、不稳定。六、自动化实战场景&坑点面试题(高薪必问)1、你的自动化用例为什么会偶尔失败(抖动用例)?怎么解决?参考答案:偶现失败核心原因都是时序问题、环境波动、数据污染:1.网络波动导致接口超时、页面加载慢2.没有合理等待,代码执行速度快于页面/接口响应速度3.测试数据重复、残留,上次用例数据未清理,影响本次执行4.弹窗、广告、随机弹窗干扰元素操作解决方案:加精准等待、接口重试、每次用例前后清理测试数据、捕获弹窗异常、过滤环境波动问题。2、如何保证自动化测试数据干净?怎么做数据隔离?参考答案:1.测试环境独立,不和开发、生产共用环境,避免数据互相干扰。2.每条用例前置造新数据,后置删除/还原数据,不依赖历史数据。3.关键测试数据做唯一处理,比如加时间戳、随机数,避免重复。4.定期清理测试环境脏数据,保证用例执行环境干净。3、Jenkins持续集成自动化流程你了解吗?参考答案:我日常对接的完整流程:1.本地写完自动化脚本,提交到git仓库。2.Jenkins配置拉取git代码、搭建Python环境、安装依赖包。3.设置触发方式:代码提交触发、定时夜间回归、手动触发。4.执行pytest自动化用例,生成allure测试报告。5.配置邮件/企业微信推送,把执行结果、失败用例、报告链接推送给团队。实现每次迭代自动回归,不用人工跑用例。4、自动化测试的劣势是什么?哪些场景不适合做自动化?参考答案:劣势:前期编写脚本需要投入时间,初期成本比手工高;对测试人员代码能力有要求;频繁变更的需求维护成本高。不适合自动化场景:1.项目周期短、一次性临时测试2.需求频繁改动、页面接口经常重构3.体验类、视觉类、交互美感测试4.低频使用的功能,投入产出比太低七、面试加分拓展题(中级自动化)1、什么是P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026AIoT智慧社区综合解决方案
- 10.1民族复兴梦 课件 2026-2027学年统编版道德与法治 九年级上册
- 2026年初中物理奥数题目及答案
- 2.2《站稳人民立场》课件 2026-2027学年道德与法治九年级上册 统编版
- 云南成考高升专理化综合真题带答案试卷
- 河南成考专升本医学综合真题试卷
- 2026年幸运儿七道题目及答案
- 中国电子科技集团公司第十研究所2027届秋季校园招聘笔试参考题库及答案解析
- 2026年甘肃省金昌市疾病预防控制中心招聘公益性岗位人员考试备考试题及答案解析
- 2026扎鲁特旗公开招聘政府专职消防员、消防文员38人笔试参考题库及答案解析
- 2026年自考00276青少年社会工作真题
- 2026统编版八年级历史上册全册问答版知识梳理
- 雨课堂学堂在线学堂云《导弹总体设计导论(国防科技)》单元测试考核答案
- 年鉴写作基本知识课件
- 2025-2026学年浙江七彩阳光新高考研究联盟高一上学期期中考英语试题含答案
- 去极端化宣传课件
- 《产品结构设计与实践》 课件汇 第0-4章 绪论、空调遥控器结构设计-果盘一体化结构设计
- 输血反应护理处理指南
- 牛囊尾蚴病课件
- 2025年中国真空杯行业市场前景预测及投资价值评估分析报告
- T-CCTAS 261-2025 低速无人配送车辆通 用技术要求
评论
0/150
提交评论