Python自动化面试题及详细答案(职场实战版)_第1页
Python自动化面试题及详细答案(职场实战版)_第2页
Python自动化面试题及详细答案(职场实战版)_第3页
Python自动化面试题及详细答案(职场实战版)_第4页
Python自动化面试题及详细答案(职场实战版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python自动化面试题及详细答案(职场实战版)本套面试题适配Web自动化、接口自动化、测试自动化岗位,内容贴合企业真实面试场景,摒弃书面化套话,答案简洁实用、落地性强,分为基础核心、自动化实战、文件/数据处理、接口自动化、爬虫常见问题、调试排错六大模块。一、Python基础核心面试题(自动化必考)1、简述Python中列表和元组的区别,以及自动化场景中各自的使用场景参考答案:1.可变性:列表(list)是可变序列,支持增删改查;元组(tuple)是不可变序列,定义后无法修改元素。2.语法区别:列表用[]定义,元组用()定义,单个元素元组必须加逗号。3.性能与安全:元组占用内存更小、运行更快,数据不可篡改更安全;列表灵活性更高。自动化实战场景:列表多用于存储动态变化的测试数据、用例集合、元素定位表达式列表;元组多用于固定不变的配置数据,比如固定的接口请求头、元素定位参数、测试环境地址,防止代码运行中被意外修改。2、字典的特性是什么?自动化测试中字典主要用来做什么?参考答案:字典是无序(Python3.7+有序)、可变的键值对数据结构,键唯一且不可变(字符串、数字、元组),值支持任意数据类型,查询效率极高。自动化常用场景:1.存储接口请求参数、响应结果数据;2.封装测试用例数据,实现数据和代码分离;3.保存配置信息,比如环境域名、账号密码、超时时间;4.解析接口返回的JSON数据,快速提取指定字段。3、深拷贝和浅拷贝的区别?自动化中什么时候需要用深拷贝?参考答案:浅拷贝:只复制外层对象,内层嵌套对象共用同一个内存地址,修改嵌套数据会影响原对象。常见方式:list切片、copy()方法、dict.copy()。深拷贝:完全复制整个对象,包括所有嵌套数据,新对象和原对象完全独立,互不影响。需要导入copy模块的deepcopy方法。实战场景:当测试数据是嵌套列表、嵌套字典时,比如批量接口测试复用同一套基础参数,修改单条用例参数不希望影响其他用例,必须使用深拷贝。普通单层数据拷贝用浅拷贝即可,节省性能。4、Python中try-except异常捕获的作用是什么?自动化脚本中如何规范使用?参考答案:作用是捕获代码运行中的异常,避免单条用例报错导致整个脚本崩溃终止,同时可以精准记录报错信息,方便定位问题。规范使用方式:1.不使用万能except裸捕获,优先捕获具体异常(TimeoutError、NoSuchElementException、AssertionError等);2.异常块中添加日志输出,记录报错位置、报错信息、测试数据;3.搭配finally使用,实现资源释放,比如关闭浏览器、关闭接口连接、退出文件;4.捕获异常后标记用例失败,而非直接终止程序,保证批量用例持续执行。二、Web自动化核心面试题(Selenium为主)1、Selenium八大元素定位方式有哪些?工作中最常用的是哪几种?为什么?参考答案:八大定位:id、name、class_name、tag_name、link_text、partial_link_text、xpath、css_selector。工作常用:xpath、css、id1.id:唯一不变时优先使用,定位速度最快,稳定性最高;2.xpath:功能最强,支持层级定位、模糊匹配、文本匹配,适配绝大多数动态元素,是复杂页面首选;3.css:定位速度比xpath更快,语法简洁,适配前端样式定位,适合简单元素定位。日常工作中基本不用tag_name、link_text等,局限性太大,适配场景极少。2、页面元素明明存在,但是Selenium提示找不到元素,常见原因及解决方案?参考答案:高频问题,核心原因及解决办法如下:1.页面未加载完成:代码执行速度快于页面渲染速度,直接报错。解决:强制等待、隐式等待、优先使用显式等待(WebDriverWait),精准等待元素可见/可点击。2.元素在iframe嵌套内:默认无法直接定位iframe内元素。解决:先switch_to.frame()切入框架,操作完成后switch_to.default_content()切出。3.元素为动态属性:class、id、value随机变化。解决:放弃属性全匹配,使用xpath模糊匹配、文本定位、相对层级定位。4.页面存在多个窗口/标签页:定位的元素在新窗口。解决:获取所有窗口句柄,切换到对应窗口后再定位。5.元素被遮挡、不可见:弹窗、浮层遮挡,或元素display:none。解决:关闭遮挡弹窗,使用等待元素可见的条件,或执行JS强制操作元素。3、隐式等待、显式等待、强制等待的区别和使用场景?参考答案:1.强制等待(time.sleep()):固定休眠时间,无论页面是否加载完成都会等待,效率低、不稳定,仅用于调试、极少数网络极差的特殊场景,正式用例禁止大量使用。2.隐式等待(implicitly_wait()):全局生效,设置最大等待时间,页面所有元素通用,只要元素加载完成就立即执行,缺点是无法针对单个元素单独设置,无法判断元素是否可点击、可见。3.显式等待(WebDriverWait):自动化首选,针对性等待单个元素,可判断元素是否存在、可见、可点击,超时才报错,稳定性最强、效率最高,适配所有常规用例。4、如何处理Web页面弹窗、广告浮层、登录弹窗?参考答案:1.普通自定义弹窗:定位弹窗关闭按钮,通过显式等待等待按钮可点击,自动关闭;2.JS原生弹窗(alert/confirm/prompt):使用switch_to.alert切换弹窗,accept()确认、dismiss()取消、text获取弹窗文本;3.随机广告浮层:封装通用关闭弹窗方法,添加异常捕获,弹窗存在则关闭,不存在则跳过,不影响主流程执行;4.定时弹窗:设置循环等待,超时无弹窗则继续执行用例。三、接口自动化面试题(Requests为主)1、PythonRequests库常用请求方式及核心参数?参考答案:常用请求方法:get、post、put、delete,对应接口四大常用请求方式。核心参数:1.url:接口请求地址;2.headers:请求头,存放token、cookie、内容格式等;3.params:get请求参数,拼接在url后;4.data:表单格式请求参数;5.json:json格式请求参数,企业接口最常用;6.timeout:超时时间,防止请求卡死;7.cookies:携带cookie请求,保持会话。2、接口请求返回乱码、中文显示异常怎么解决?参考答案:1.手动设置响应编码:response.encoding="utf-8",适配绝大多数中文接口;2.自动识别编码:response.apparent_encoding,根据返回内容自动匹配编码格式;3.排查请求头,确保Content-Type格式正确,避免编码不统一导致乱码。3、什么是接口关联?工作中如何实现token、cookie、参数关联?参考答案:接口关联就是后一个接口需要依赖前一个接口的返回数据作为请求参数,是接口自动化核心场景,比如登录接口返回token,后续业务接口都需要携带token请求。实现方式:1.全局变量:提取前置接口的token、cookie存入全局变量,后续用例直接调用;2.类属性:在测试类中定义属性存储关联参数,同类别用例共享数据;3.配置文件/缓存:固定存储通用关联参数,适配多文件、多模块调用;4.会话保持:使用requests.session()创建会话对象,自动保存cookie、请求上下文,实现接口上下文关联。4、接口自动化中如何做断言?常用断言场景有哪些?参考答案:基于unittest/pytest框架的assert语句完成断言,核心是判断接口请求结果是否符合预期。常用断言场景:1.状态码断言:判断响应状态码是否为200、201等预期值;2.关键字断言:判断响应文本、json数据中是否包含指定关键字;3.字段值断言:精准判断返回的code、msg、data字段数值是否正确;4.数据长度、列表断言:判断返回数据条数、列表是否为空;5.业务逻辑断言:新增接口后查询接口,校验新增数据是否存在。四、文件、数据处理面试题(自动化高频)1、Python读取Excel测试数据常用库有哪些?区别是什么?参考答案:常用库:xlrd、xlwt、openpyxl1.xlrd:仅支持读取Excel,不支持写入,新版不支持xlsx格式,适配老版本xls文件;2.xlwt:仅支持写入xls格式,不支持xlsx,文件最大行数有限制;3.openpyxl:主流首选,支持读写xlsx格式,功能全面、兼容性强,支持批量修改单元格、样式调整,完全适配自动化数据驱动测试。2、什么是数据驱动?自动化中如何实现数据驱动测试?参考答案:数据驱动就是将测试数据和测试代码分离,统一代码逻辑,通过读取Excel、CSV、JSON、列表中的不同数据,自动执行多条测试用例,减少代码冗余,提升用例维护效率。实现方式:1.pytest框架:使用@pytest.mark.parametrize装饰器传入多组测试数据;2.unittest框架:封装读取Excel工具类,循环遍历数据执行用例;3.适配场景:登录功能、参数提交、批量接口测试等重复逻辑、多组数据的测试场景。3、Python读写JSON文件的常用方法?自动化使用场景?参考答案:通过json模块实现,loads()将json字符串转为字典,dumps()将字典转为json字符串;load()读取json文件,dump()写入json文件。使用场景:1.存储项目配置信息(域名、账号、超时时间);2.存放接口测试用例参数,实现数据驱动;3.保存接口响应结果,用于后续数据校验和复盘。五、自动化框架与实战面试题1、pytest和unittest框架的区别?工作中优先用哪个?参考答案:1.语法简洁度:unittest语法繁琐,必须写类和方法,固定格式;pytest语法灵活,支持函数、类、普通用例,代码更简洁。2.用例执行:unittest自带断言,功能单一;pytest支持丰富的断言、插件扩展(失败重跑、多线程、报告美化)。3.前置后置:unittest只有setUp/tearDown;pytest支持模块级、类级、函数级灵活夹具。4.扩展性:pytest生态完善,适配接口、Web、APP全场景自动化,是目前企业主流框架。工作选择:优先pytest,仅老旧项目维护会用到unittest。2、pytest夹具(fixture)的作用是什么?自动化中如何使用?参考答案:fixture是pytest的前置后置工具,用于预处理和后置清理工作,替代传统的setUp/tearDown,灵活性更高。核心作用:1.前置操作:打开浏览器、登录账号、获取token、连接数据库;2.后置清理:关闭浏览器、清除测试数据、断开数据库连接;3.数据共享:全局、模块、类、函数级别的夹具,实现数据复用;4.参数传递:夹具可以返回数据,供测试用例调用。3、自动化用例失败重跑如何实现?适用什么场景?参考答案:通过pytest-rerunfailures插件实现,配置重跑次数和失败等待时间。适用场景:1.网络波动导致的偶发性失败;2.页面加载延迟、接口响应超时导致的临时报错;3.不适用代码bug、业务逻辑错误导致的失败,这类问题重跑依然会失败,需要修复代码。六、常见报错与排错面试题(实战压轴)1、自动化脚本运行不稳定、偶现失败,如何排查和优化?参考答案:1.排查等待问题:将强制等待替换为显式等待,避免页面加载时差导致的报错;2.优化元素定位:替换不稳定的动态属性定位,使用相对定位、文本定位,避免属性变动导致定位失败;3.处理弹窗、浮层:封装通用异常捕获,自动关闭随机弹窗,避免遮挡元素;4.增加日志输出:记录每一步操作、请求参数、响应结果,精准定位偶发问题;5.清理测试环境:避免上一条用例的残留数据、登录状态影响下一条用例;6.关闭浏览器自动化检测,规避前端反爬、自动化拦截。2、如何避免自动化用例之间相互影响?参考答案:1.用例独立:每条用例前置独立准备数据,后置清理测试数据,不依赖其他用例执行结果;2.状态重置:每条用例执行完毕,退出登录、关闭页面、清空缓存,恢复初始环境;3.数据隔离:测试数据唯一,避免多条用例操作同一条业务数据;4.执行顺序:禁止依赖用例执行顺序,pytest默认无序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论