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

下载本文档

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

文档简介

Python自动化测试面试题及详细答案(实操版)一、Python基础核心(自动化必备)1、列表和元组的区别?工作中分别怎么用?参考答案:核心区别就是可变和不可变。列表list是可变的,可以增删改查;元组tuple不可变,定义后不能修改。工作场景用法:1.做测试数据、用例集合、需要动态增减数据的场景,用列表;2.固定不变的配置、接口固定参数、路径常量,用元组,防止代码运行中被意外修改,更安全。补充:元组性能比列表高,占用内存更小。2、字典的特性?自动化测试中主要用途是什么?参考答案:字典是键值对存储,key唯一、无序(python3.7+有序)、查询速度极快。自动化里用得非常多:1.存储接口请求参数、响应结果,key对应参数字段,value对应参数值;2.封装测试用例,一个字典存一条用例的编号、入参、预期结果;3.统一管理配置信息,比如域名、账号、token、文件路径等。3、Python深拷贝和浅拷贝的区别?什么时候会踩坑?参考答案:浅拷贝:只拷贝外层对象,内层嵌套对象还是共用同一个内存地址,修改嵌套数据会互相影响;深拷贝:完全拷贝所有层级数据,新旧对象彻底独立,互不影响。工作踩坑场景:接口测试中,多个用例共用同一个参数字典,浅拷贝修改其中一个用例的参数,会导致其他用例参数被篡改,这种情况必须用深拷贝。4、什么是闭包?装饰器的原理和自动化用途?参考答案:闭包就是内层函数引用外层函数的变量,且外层函数返回内层函数。装饰器就是基于闭包实现的。装饰器不用修改原函数代码,就能给函数新增功能,自动化里常用场景:1.用例前后置处理、统一加日志打印;2.接口请求统一加token、签名校验;3.用例失败重试、异常捕获、截图保存;4.统计用例执行耗时。5、Python异常处理机制?自动化中为什么要加try-except?参考答案:基础结构:try捕获异常、except处理异常、else无异常执行、finally无论是否异常都会执行。自动化必须加异常捕获,核心原因:1.防止单条用例报错崩溃,导致整个测试套件停止执行;2.报错后可以自定义日志、截图、保存现场数据,方便定位问题;3.可以区分业务异常、网络异常、参数异常,精准报错。二、自动化测试基础理论1、你理解的自动化测试是什么?适合做哪些场景?不适合哪些?参考答案:自动化就是用代码替代人工重复的测试操作,核心目的是提高回归效率、保证版本稳定性、减少人工重复劳动。适合场景:1.项目迭代频繁、需要反复回归的核心流程;2.重复性高、机械性的接口、页面操作;3.压力测试、批量数据校验、兼容性重复测试。不适合场景:1.需求频繁变动、页面和接口经常改的新项目;2.一次性测试、临时验证的场景;3.界面UI美观、用户体验、主观判断的测试。2、自动化测试用例的设计原则?怎么保证用例稳定?参考答案:设计原则:一条用例只测一个核心点、步骤清晰、入参独立、断言精准、可重复执行。保证稳定性的实操方法:1.用例之间数据独立,不依赖上一条用例的执行结果;2.执行前清理测试数据,执行后还原环境;3.加合理的等待时间,不用死等待,用智能等待;4.精准断言,不断言全部返回值,只断言核心字段;5.捕获网络波动、偶尔失效问题,增加失败重试机制。3、手动测试和自动化测试的分工配合?参考答案:新需求第一轮全量功能、边界值、异常场景、UI体验、探索性测试全部由人工完成。需求稳定后,把核心流程、高频回归场景写成自动化用例,后续版本迭代由自动化做回归,人工专注新功能测试、问题复盘、复杂场景验证,互补提升效率。三、接口自动化测试(高频核心)1、requests库常用方法及参数?get和post区别?参考答案:常用方法:get、post、put、delete,对应接口四大请求方式。常用参数:url、params(get参数)、data(表单参数)、json(json参数)、headers、cookies、timeout、verify。get和post核心区别:1.get参数拼接在url上,有长度限制,不安全;post参数放在请求体,无长度限制;2.get请求可缓存、可收藏,post不会缓存;3.日常查询类接口用get,新增、修改、提交类接口用post。2、接口测试中,json和data传参的区别?经常踩的坑是什么?参考答案:data:传的是表单格式(application/x-www-form-urlencoded),参数是字典会自动转表单数据;json:传的是json格式(application/json),直接将字典序列化为json字符串传给接口。高频踩坑:后端接口要求json格式,代码却用data传参,导致接口报参数错误、参数接收为空,这是新手最常见的问题。3、接口依赖怎么处理?比如登录token给后续接口使用参考答案:工作中三种常用处理方式,按项目规范选择:1.全局变量:登录接口获取token,赋值全局变量,后续所有接口请求头部引用该变量;简单小型项目够用;2.配置文件:把token写入yaml/json配置文件,其他模块读取,适合多文件调用场景;3.夹具/前置函数:在pytest前置夹具里执行登录,返回token,所有需要鉴权的用例直接调用夹具,最规范、稳定性最高,主流项目都这么用。4、接口断言你是怎么做的?怎么精准断言不冗余?参考答案:我不会全量断言返回数据,效率低且容易报错,只断言核心业务字段。常用断言方式:1.断言状态码是否为200;2.断言返回code、msg是否符合预期;3.断言核心业务数据,比如新增接口断言id不为空、查询接口断言数据匹配;4.复杂接口会断言数据类型、数据长度、关键字段存在性。5、接口偶尔失败(偶现bug)怎么排查?参考答案:偶现问题是接口测试重点难点,我会按顺序排查:1.先看日志:请求参数、请求头、响应结果、报错信息,确认是否是参数波动导致;2.排查环境问题:网络超时、服务器卡顿、并发限制;3.排查数据问题:测试数据重复、数据未清理、脏数据影响接口;4.排查接口逻辑:并发场景、时间戳临界值、缓存未刷新导致的偶现异常;5.本地多次复现,固定复现步骤,提bug附带完整请求日志和参数。四、Pytest框架核心面试题(主流框架)1、pytest相比unittest的优势?工作中为什么用pytest?参考答案:1.语法更简洁,不用强制写类和self,普通函数就能写用例,代码更轻便;2.夹具(fixture)功能强大,灵活控制用例前置后置,支持层级调用,比unittest的setUp/tearDown灵活太多;3.插件生态丰富,allure报告、失败重试、多线程执行、参数化都有现成插件;4.用例筛选、跳过、重跑机制更完善,适合大型自动化项目。2、pytestfixture的作用、scope参数区别?参考答案:fixture就是用来做用例前置后置、数据准备、环境初始化的,替代传统的前置方法,支持参数传递、依赖注入。scope四个级别:1.function:默认级别,每个用例执行一次;2.class:每个测试类执行一次;3.module:每个py文件执行一次;4.session:整个测试套件执行一次,适合全局登录、全局初始化。3、pytest参数化怎么做?用途是什么?参考答案:通过@pytest.mark.parametrize装饰器实现,一次性传入多组测试数据。用途:批量执行正常场景、异常场景、边界值场景,不用重复写多条用例代码,极大精简代码量,主要用于接口参数校验、边界测试。4、pytest怎么实现用例失败重试?怎么跳过用例?参考答案:失败重试:安装pytest-rerunfailures插件,执行命令加--reruns次数,解决网络波动导致的临时失败;跳过用例:使用@pytest.mark.skip(无条件跳过)、@pytest.mark.skipif(条件跳过,比如特定环境不执行)。5、allure报告怎么集成?报告核心展示内容?参考答案:流程:代码中添加allure标题、模块、步骤、重要信息,执行用例生成临时json结果,通过allure命令生成可视化HTML报告。报告核心内容:用例通过率、失败/跳过/错误用例统计、用例执行步骤、请求日志、报错堆栈、执行耗时、模块分类。五、UI自动化(Selenium)高频题1、Selenium八大定位方式?工作中最常用的是哪几个?参考答案:八大定位:id、name、class、tag、link_text、partial_link_text、xpath、css。工作常用优先级:id>css>xpath。id唯一稳定优先用;css速度快、简洁;xpath兼容性强,适合没有唯一属性的元素,日常复杂元素基本靠xpath。2、隐式等待、显式等待、强制等待的区别和使用场景?参考答案:1.强制等待time.sleep():固定等待时间,不管页面是否加载完成,不稳定,只用于特殊卡顿场景,尽量少用;2.隐式等待:全局设置,元素没加载完就等待,超时就报错,作用于全部元素,适合整体页面加载;3.显式等待(WebDriverWait):针对单个指定元素等待,等待元素可见、可点击、存在,精准高效,是UI自动化最推荐的等待方式,大幅提升用例稳定性。3、UI自动化元素定位失败的常见原因及解决办法?参考答案:1.页面没加载完成:改用显式等待,不要用强制等待;2.元素属性动态变化:不用动态id/class,改用相对xpath、css定位;3.存在iframe嵌套:先切换iframe再定位元素;4.窗口跳转没切换句柄:获取全部窗口句柄,切换到最新窗口;5.元素被遮挡、不可见:判断元素状态,等待可点击、可见后再操作。六、项目实战&进阶面试题(压轴必问)1、简单介绍一下你的自动化测试项目框架?参考答案:我基于Python+pytest+requests+allure搭建的接口自动化测试框架,整体分层清晰:1.公共层:封装请求方法、日志工具、读取配置文件、数据清洗、异常处理;2.配置层:统一管理测试环境域名、账号token、文件路径、数据库配置;3.用例层:按业务模块划分用例,用参数化管理多组测试数据,fixture管理前置后置;4.数据层:用yaml管理测试用例数据,做到数据和代码分离;5.报告层:集成allure可视化报告,展示用例执行情况和报错日志;6.持续集成:接入Jenkins,定时自动执行,构建失败自动推送报告到企业微信。2、自动化脚本维护成本高怎么解决?参考答案:这是自动化最核心的问题,我项目里是这么管控的:1.代码分层封装,公共逻辑统一抽离,改一处就能全局生效,不用批量改用例;2.数据代码分离,参数、配置全部放配置文件,不用改代码;3.只覆盖核心主干流程,不写边角低频用例,减少维护量;4.接口字段变更后,统一更新公共参数模板,不用逐条修改用例;5.定期清理失效用例、修复不稳定用例,保证套件健康度。3、怎么实现接口关联?举个工作中的例子参考答案:接口关联核心就是提取上一个接口的返回数据,作为下一个接口的入参。举例:新增用户接口返回user_id,后续查询用户、编辑用户、删除用户接口都需要这个user_id。实操:用fixture执行新增接口,提取返回的user_id并返回,后续所有依赖user_id的用例直接调用该夹具,自动获取参数,实现接口关联,全程不用手动传值。4、自动化测试覆盖率怎么衡量?你项目覆盖率多少?参考答案:我这边不追求百分百覆盖率,核心看业务核心流程覆盖率。统计维度:核心接口数量、主干业务场景数量,自动化覆盖占比。我项目中核心业务接口

温馨提示

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

最新文档

评论

0/150

提交评论