版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python自动化测试面试题及详细答案(实战版)说明:本题库贴合企业真实面试场景,覆盖Python基础、自动化框架、接口测试、UI测试、实战问题、性能与踩坑排查,答案均为工作实操总结,无书面化空洞内容,适配初级、中级自动化测试岗位面试。一、Python基础核心面试题(自动化必考)1、简述Python中列表和元组的区别,以及自动化测试中的使用场景参考答案:1.本质区别:列表list是可变对象,支持增删改查;元组tuple是不可变对象,定义后无法修改元素。2.语法区别:列表用[]定义,元组用()定义,单元素元组必须加逗号。3.性能区别:元组占用内存更小、访问速度更快,列表灵活性更高。4.测试场景使用:-列表:日常存储测试数据、接口返回的列表数据、用例集合,需要动态增删数据时优先使用。-元组:存储固定不变的测试常量,比如接口地址、固定参数、断言预期结果,防止代码运行中被意外修改。2、Python字典的常用方法有哪些?自动化中如何用字典存测试用例?参考答案:常用方法:get()、keys()、values()、items()、update()、pop()、clear()。其中get()是测试中最常用的方法,优势是键不存在不会报错,可设置默认值。测试用例存储方式:日常接口测试、功能测试的单条用例,我会用字典结构化存储,字段固定为用例标题、请求方式、接口地址、请求参数、请求头、预期结果、是否执行。示例:PlainText
case={
"title":"登录成功-正确账号密码",
"method":"post",
"url":"/api/login",
"data":{"username":"test01","pwd":"123456"},
"expect_code":200,
"expect_msg":"登录成功"
}多条用例统一放入列表,批量遍历执行测试,适配unittest、pytest框架。3、深拷贝和浅拷贝的区别?自动化测试中什么场景会遇到?参考答案:1.浅拷贝:只拷贝顶层对象,对象内部的子对象还是引用原数据,修改子对象会同步影响原数据。常用方法:list.copy()、切片、copy.copy()2.深拷贝:完全拷贝所有层级对象,新旧数据完全独立,修改互不影响。常用方法:copy.deepcopy()实战场景:测试数据复用场景,比如多条接口用例共用一个基础参数模板,浅拷贝修改其中一条用例的嵌套参数,会把其他用例数据改乱;用深拷贝可以保证每条用例数据独立,互不干扰。4、Python异常处理机制是什么?自动化脚本中为什么必须加异常捕获?参考答案:核心语法:try、except、else、finally、raise。执行逻辑:try执行正常代码,报错则触发except捕获异常;无报错执行else;finally无论是否报错都会执行。自动化使用原因:1.避免单条用例报错导致整个测试脚本、批量用例全部终止;2.可以精准捕获接口超时、参数错误、断言失败等问题,自定义报错日志;3.结合截图、日志功能,报错时自动留存现场,方便定位bug。二、Pytest+Unittest框架面试题(核心必考)1、Pytest相比Unittest的优势是什么?工作中你优先用哪个?参考答案:Unittest是Python内置框架,无需安装,语法规整,适合入门,缺点是语法繁琐,必须写类和方法,断言只能用self.assertEqual,灵活性差。Pytest是第三方主流框架,也是我工作中优先使用的框架,优势:1.语法简洁,支持函数、类两种用例写法,不用强制继承类;2.断言简单,直接用原生assert,报错信息清晰,不用记各种断言方法;3.支持丰富插件:allure报告、失败重跑、参数化、用例分级、多线程执行;4.固件(fixture)功能强大,灵活管理前置后置,比unittest的setUp/tearDown更灵活,支持作用域控制。2、Pytestfixture的作用域有哪些?实际工作怎么用?参考答案:四种常用作用域(优先级从低到高):function(默认,每个用例执行一次)、class(每个测试类一次)、module(每个py文件一次)、session(整个测试会话一次)。实战用法:1.session级别:全局登录、全局连接数据库、全局初始化接口域名,所有用例共用一次;2.module级别:单个模块测试前初始化测试数据,执行完清空数据;3.function级别:每个接口用例前置构造参数、后置断言后清理临时数据。3、Pytest参数化的用法?如何实现多组数据批量执行用例?参考答案:使用@pytest.mark.parametrize装饰器实现参数化,支持单参数、多参数、多组测试数据。工作中主要用于边界值测试、异常参数测试、批量场景覆盖,比如登录接口的正确密码、错误密码、空参数、特殊字符参数,一组代码批量执行所有场景,不用重复写用例。4、自动化用例失败重跑怎么实现?原理是什么?参考答案:通过pytest-rerunfailures插件实现,是项目标配。执行命令可指定重跑次数、失败重试间隔。适用场景:解决偶现性bug、网络抖动导致的接口超时、服务器瞬时卡顿等非代码问题的失败用例,避免无效失败阻塞测试流程。三、接口自动化测试面试题(岗位核心)1、你做接口自动化的整体流程是什么?参考答案:1.需求梳理:对接接口文档,梳理接口请求方式、参数、必填项、返回字段、业务逻辑、依赖关系;2.环境准备:搭建测试环境,确认接口域名、账号权限、数据库可连接;3.框架搭建:基于pytest搭建分层框架,区分接口层、用例层、数据层、工具层、日志报告层;4.接口封装:对get、post、put、delete请求进行二次封装,统一处理请求头、超时、异常;5.编写用例:覆盖正常场景、异常场景、边界值、参数缺失、权限校验;6.断言设计:不仅断言状态码,还要断言返回数据、业务状态、数据一致性;7.报告生成:用allure生成可视化报告,记录失败用例、报错日志;8.持续集成:接入Jenkins,定时执行、代码提交触发执行,回归版本接口。2、requests库核心用法?get和post请求的区别参考答案:requests是Python接口测试核心库,常用方法:requests.get()、requests.post()、requests.put()、requests.delete()。核心参数:url、params(get传参)、data(表单参数)、json(json参数)、headers、cookies、timeout、verify。Get和Post区别:1.get参数拼接在url上,参数公开、长度有限制;post参数在请求体中,更安全、无长度限制;2.get多用于查询类接口,无数据修改;post多用于新增、修改、提交类接口;3.get请求可缓存,post不会缓存。3、接口断言你一般断言哪些内容?只断言200可以吗?参考答案:绝对不可以只断言状态码200,很多业务异常接口依然会返回200状态码,比如密码错误、参数非法,单纯断言状态码无法覆盖业务bug。我的完整断言维度:1.基础断言:HTTP状态码、接口响应时长(防止接口卡顿);2.业务断言:返回code码、提示信息msg;3.数据断言:核心字段是否存在、字段类型是否正确、返回数据是否符合预期;4.业务一致性断言:接口返回数据和数据库数据是否一致,新增数据是否入库、删除数据是否清空。4、接口依赖如何处理?比如登录token给后续接口使用参考答案:工作中三种主流处理方式,根据场景选用:1.Fixture前置依赖:session级别的登录固件,提前获取token,存入全局变量,所有业务接口直接调用使用;2.用例返回值传递:前置接口执行后返回核心参数(token、id),后置用例直接接收参数;3.数据文件存储:将登录token、临时id写入json/txt文件,后续接口读取文件参数,适合跨模块依赖场景。5、接口返回json数据,如何精准提取嵌套字段?参考答案:接口响应res.json()可将返回数据转为Python字典,通过键层层取值。如果是多层嵌套,逐级获取key值。实操中优先用get()方法取值,避免字段不存在直接报错,同时增加异常判断,提升脚本稳定性。四、UI自动化(Selenium)面试题1、Selenium八大定位方式,常用的有哪些?优先级是什么?参考答案:常用五种:id、name、xpath、css、class_name。企业优先级:id>css>xpath>其他原因:id页面唯一、最稳定;css定位速度快、简洁;xpath兼容性好,适合无id的元素,但绝对路径极易失效,日常只用相对xpath。2、UI自动化中元素定位失败的常见原因及解决方案参考答案:1.页面未加载完成:强制等待、隐式等待、优先使用显式等待,精准等待元素可点击/可见;2.元素在iframe内:先切换iframe,定位完成后切回主页面;3.页面窗口跳转:多窗口切换,获取窗口句柄跳转对应页面;4.元素属性动态变化:放弃固定属性,用文本匹配、模糊匹配、相对定位;5.网络卡顿、页面渲染慢:优化等待时间,增加异常重试机制。3、三种等待方式的区别和使用场景参考答案:1.强制等待time.sleep():固定休眠时间,不管页面是否加载完成,稳定性差,只用于调试代码,项目中禁止大量使用;2.隐式等待implicitly_wait:全局等待,针对所有元素,超时范围内循环查找元素,缺点是无法针对单个元素精准控制;3.显式等待WebDriverWait:针对单个元素设置等待条件(可见、可点击),精准高效,是项目主推的等待方式,节省执行时间、稳定性最高。五、实战踩坑&CI集成&问题排查(高阶面试题)1、自动化脚本运行成功,手动测试却有bug,是什么原因?参考答案:1.用例覆盖不全:自动化只覆盖了正向场景,遗漏边界值、异常场景、弱网、超时场景;2.断言不严谨:只断言了核心字段,忽略了隐性业务逻辑、数据联动、权限校验;3.环境差异:自动化测试环境数据干净、稳定,线上/测试环境存在脏数据、缓存问题;4.执行频率问题:自动化单次执行正常,多次并发、连续操作会出现偶现bug;5.依赖问题:自动化脚本前置初始化了数据,手动测试无前置数据导致问题暴露。2、如何处理自动化用例偶现失败的问题?参考答案:1.日志排查:查看详细执行日志、接口响应日志、页面操作日志,定位失败时机;2.排除环境问题:网络抖动、服务器卡顿、数据库锁表、缓存未刷新;3.优化脚本:增加精准等待、参数校验、异常重试,避免时序问题;4.数据隔离:每条用例执行前后清理脏数据,保证用例独立性;5.标记隔离:稳定失败用例优先修复,偶现用例单独标记,持续观测,不阻塞整体回归。3、Jenkins+Pytest自动化持续集成流程参考答案:1.代码托管:自动化脚本上传至Git仓库;2.Jenkins配置:新建任务,关联Git地址,配置分支拉取;3.环境配置:服务器安装Python依赖、allure插件、运行环境;4.执行策略:配置定时构建(每日凌晨回归)、代码提交触发构建;5.脚本执行:执行shell命令,安装依赖、运行pytest用例、生成allure报告;6.结果推送:配置邮件/企业微信推送,发送测试报告、失败用例统计,及时同步问题。4、自动化测试和手工测试的区别?什么场景适合做自动化?参考答案:区别:手工测试灵活,适合探索性测试、新功能测试、UI样式校验;自动化适合重复、批量、高频回归测试,效率高、无人工误差。适合自动化场景:1.版本迭代频繁,需要重复回归的接口、功能模块;2.边界值、批量参数、重复操作的测试场景;3.压力测试、
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 6.3文化自信日益增强 课件 2026-2027学年统编版道德与法治 九年级上册
- 上海成考专升本艺术概论真题带答案解析
- 河南成考专升本医学综合刷题自测真题
- 2026年南光集团有限公司人员招聘考试参考题库及答案
- 2026云南交通职业技术学院公开招聘博士岗位名额已满考试备考题库及答案解析
- 2026年弥渡县苴力镇人民政府招聘公益性岗位人员(2人)笔试参考题库及答案解析
- 吉水县吉湖物业服务有限公司2026年面向社会公开招聘1名水电工及1名管理员助理笔试备考试题及答案解析
- 2026广东惠州市博罗县县直机关单位(博罗县财政局、博罗县水利局)招聘编外人员3人笔试模拟试题及答案解析
- 玛瑙镇村常职干部公开遴选(1人)笔试模拟试题及答案解析
- 2026下半年宜昌市公安局公开招聘辅警24人笔试备考题库及答案解析
- 2025年山东公务员考试申论试题及答案(B卷)
- 雨课堂学堂在线学堂云《软件测试与质量保证(北京理工)》单元测试考核答案
- 青岛网约车合同范本
- T∕CROAKER 008-2025 大黄鱼鱼苗质量等级评定
- 基础化学仪器分析课件
- 2025承插型盘扣式钢管脚手架安全管理要点培训
- DG-TJ08-2144-2025 公路养护工程质量检验评定标准
- 误伤私了协议书范本
- 生物化学 -第四章 酶
- 2025版中石化石油化工项目可行性研究报告编制规定
- 2024年秋新沪教牛津版英语三年级上册 Unit 5 第1课时 教学课件
评论
0/150
提交评论