这样的Python自动化测试面试题,测开来了都不一定都会把!

十、接口自动化
10.1 接口自动化怎么测试
( Python+ requests+pytest 版本)
原来我们接口自动化是用 python+ request+ pytest 执行
接口自动化其实主要就是接口测试的基础上填加了断言,参数化,动态关联
做接口自动化之前,我们也会划分模块,报告,公共的模块,测试数据,测试报告,主要的目的是为
了方便后期的维护
测试数据,一般原来我们就是用的接口测试用例,公共的模块,主要是里面的一些公共的作,比如说
用例 excel 数据的读取
数据库的连接,还有我们封装的每个接口请求
断言的主要是获取访问接口的值判断,用的是 assert,参数化主要用的比较多是 excel 表格,就是
测试用例数据
还有需要调用登录后的 cookies 跟 token 的时候,我们就会用到关联
比如说原来我们写的一个申请借款的接口吧
首先我们会编写测试用例,把每个用例数据保存到 excel 中
再建立一个申请借款的模块
这个时候我们去调用申请借款的功能模块,里面的参数我们是保存在 excel 表格中
我们建立发送请求,通过参数化,去读写 excel 表格中的数据,获取到返回的数据,通过 assert 去
对应返回的数据跟用例中异常的数据。
这个时候也会做数据库断言,去连接数据库去查询数据库中时候存在查询,如果是返回结果
是 json 数据格式,我们还会转化下格式后,再去断言
这个申请借款模块,也会用到登录的 cookie 值 token,我们先建立一个登录的请求,提取
返回的 cookie 值 token
excel 表格多个用例,我们就用到循环去运行,读取 excel 中用例总的条数,去循环运行,
这里要注意的是:
就是 excel 表格数据时是 str 我们要 eval 转化成字典格式
把每个接口封装好以后
我们就会调用 pytest 框架去运行所有 test 文件的测试用例

80
如果只是执行部分用例,也可以通过 pytest 框架来指定
然后用 yagmail,在 pytest 框架运行完 test 文件之后,发送邮件到指定邮箱。
接口自动化,我个人觉得,性价比是比较高的。
实现起来简单、维护成本低,容易提高覆盖率等特点
接口是稳定的,最多是增加一个字段或者新增接口之类的
低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就可以了
执行的快,反馈的速度快
(jmeter 版本)
原来我们也做了很多接口自动化,接口自动化这块,其实原来我们也是用 jmeter 请求去做的,这个
时候,我们也用到一些工具,http 代理,主要方便编写接口请求,通过录制就行了,我觉得接口自
动化只是在接囗测试中多加了一些参数化、关联、断言参数,主要是函数参数化,自定义变量参数化,
文件参数化,主要文件类型 csv 跟 txt,不过原来 csv 文件用的比较多,还有一些数据库的参数化,
断言,主要响应代码断言,响应文档断言。
比方说,原来我们一个登录接口主要是正常场,异常场票这块,正常场景,主要是用户跟密码正确,
采用数据参数化,把用户名用随机函数进行参数化,随机长度大一些,用户名不存在的情况,原来是
通过文件参数化,设置参数值,密码不正确也是通过文件参数化,接口请求中 host 地址,目录地址,
我们都进行数据化,自定义变量去操作,结果检中,我们主要是用断言来检查,每个请求,
设置了 2 个断言,一个响应代码断言,一般是 200,响应文本断言,登录成功,返回码为 1
状态提示成功,检意是否成功,对应异常场景也是,都需要设置断言,去检查结果原来做的申请借款
接口,需要登录接口 http cookie,我需要建立 2 个接口,一个登录接口,一个申请借款接口,通过
正则表达式去提取登录接口返回 cookie,在申请借款请求接口,设置 http cookie 时,值为登录接
口返回 cookie,还有也要考虑原来我们项目,还有 token 值,提取登录返回 token,提取,当成申请
借款的请求参数,当测试场景的脚本编写完成,执行接口测试用例,我们在察看结果树中,检直,主
要是看颜色这块,红色检查哪些地方失败,绿色表示通过
编写完成后,我们会把脚本添加到 jenkins 里面持续集成运行
原来我们持续集成是半个月运行一次,当然我们也可以手动构建
1,我们一般把写完的 jmeter 的脚本
2,通过 svn 把写好的脚本检入到 svn 服务器
3,在 jenkins 任务下,选择定时构建,或者手动构建,检查 svn 上传最新的脚本,去运行
一般我们项目在修改新的功能模块,上线,转测之前,都会自动去运行脚本
4,运行完成,我们再 jenkins 下,查看脚本运行结果

81
10.2 为什么做接口自动化?
接口自动化,我个人觉得,性价比是比较高的
实现起来简单,维护成本低,容易提高覆盖率等特点
接口是稳定的,最多是增加一个字段或者新增接口之类的
低成本,有了相对的稳定性,不需要大量重新编写脚本,只需要基础维护包括用例的扩充就
可以了执行的快,反馈的速度快
10.3 假如公司想要做自动化,让你去做,你会从那些方面考虑入手?
1.测试范围 2.时间进度 3.人员安排 4.框架确定
5.环境的搭建 6.准备好测试数据 数据驱动 7.工程的管理后期的维护
10.4 你写了多少接口自动化用例
自动化用例,也没有具体数过,当时我负责的所有模块的接口的自动用例都是我这边独立完成的,
有模块的用例会多一点,有些会少一点,这具体看接口的参数有多少,参数多限制条件多的,
一般用例会比较多一点,我负责的模块大概有 100 多条用例是有的!
10.5 比如说你接口的请求参数需要加密处理的,你们用的是什么加密方式,你加密怎么处理的?
这个是有做过的,就拿当我们那个项目的登录接口来讲吧,那个登录的密码是需要进行加密
加密之后再进行传输。这里需要问开发要加密算法,我们会把它封装成一个函数,调用这个加密函数
对密码加密,之后再进行传递。我们公司的加密算法,大部分用的都是 MD5 的加密算法(base64)
10.6 你查询出来返回结果是密文,密文你怎么测试
这里首先要搞清楚用的是什么加密算法,问开发要解密算法,对返回的数据进行解密
解密完成之后在与预期结果对比,去进行断言
10.7 http 如何进行代理录制接口
Web 端
1,浏览器设置代理就可以录制,默认 ip 为 localhost,端口 8888
手机端
1,手机设置代理就可以录制
默认 ip 为 pc 机器的 ip 地址,端口 8888
10.8 jmeter 如何进行参数化,参数化类型包含哪些
用户参数自定义变量文件参数化,csv 文件或者 txt 文件
函数助手随机函数,csvread 函数数据库参数化

82
10.9 jmeter 中对于 json 数据如何提取信息
正则表达式提取或者 JSON Extractor 提取
10.10 jmeter 中如何跨线程组传输参数
正则表达式或者边界值提取器或者 JSON Extractor 提取的值
后置处理器- beanshell 处理器
定义成全局变量
${_setProperty(newtoken,${access_token},)}
其他线程组,引入变量值
${_P(newtoken,)}或者${_property(newtoken,)}
10.11 jmeter 如何进行断言
1,响应断言
添加响应断言:添加-》断言-》响应断言
apply to:是应用范围,设定匹配的范围
Main sample and sub-samples:匹配范围为当前父取样器,及子取样器
Main sample only:仅当前父取样器
Sub samples only:仅子取样器
Meter Variable:变量值进行匹配
要测试的响应文字:针对响应数据不同部分进行匹配
(1)响应文本:响应服务器返回的文本内容,http 协议排除 header 部分
(2)响应代码:匹配响应代码,比如 http 请求中 200 代表成功
(3)响应信息:匹配响应信息,处理成功返回成功”或者“ok”字样
(4) Response Header 匹配响应头中的信息
匹配规则:
包括:响应内容包括需要匹配的内容就算成功
匹配:响应内容要完全匹配内容,不区分大小写
equals:完全相等,区分大小写
substring:响应内容包括匹配内容即为成功
可以通过添加断言结果来查看断言的执行情况
执行结果:
如果接口响应数据可以与断言匹配上,则测试用例通过,否则不通过
可以通过断言结果,查看断言执行情况。

83
2,大小断言
3,持续时间断言
10.12 jmeter 如间在 cmd 命令下运行
Jmeter -n -t 文件路径\fw-zhuce.jmx -l result.jtl -e -o E:\resultreport
讲解:非 GUI 界面,压测参数讲解
-h 帮助
-n 非 GUl 模式
-t 指定要运行的 JMeter 测试脚本文件
-l 记录结果的文件每次运行之前,(要确保之前没有运行过即 xxx.jtl 不存在,不然报错)
-r Jmter.properties 文件中指定的所有远程服务器
-e 脚本运行结束后生成 html 报告
-o 用于存放 html 报告的目录(目录要为空,不然报错)
-R 表示选择执行=远程启动
XXX.XXX. XXX. XXX:5174 ,XXX. XXX. XXX. XXX:5172
官方配置文件地址 http://jmeter.apache.org/usermanual/get-started.html
10.13 imeter 运行完成后如何去自动发送邮件?
(1)监听器中添加-邮件观察仪
文件名-运行完成,保存运行结果的位置
from 邮件的发送人
isz181xiongmao@126.com
addressee 邮件的接收人(多个人用逗号隔开)
success subject 运行成功,发送邮件标题 success limit 大于运行请求成功的次数
failure subject 运行失败,发送邮件标题 failure limit 大于运行请求失败的次数
host 邮件服务器地址 smtp.126cm
login 邮件服务器登录用户名密码(授权码)
1、文件名:只需要给出路径和保存的文件名称即可,给定之后将会把测试结果的数据写入到文件中
注:它不会将此文件已附件的形式在邮件中,只是将测试结果写入到了定的此目录文件中,
如果你运行完脚本,直接在此路径下打开此文件就可以看到运行结果
2、 Success Limit 与 Failure Limit:当成功数与失败数为几时进行邮件的发送(注意:此处是大于
给定的数值,不是等于),我写的 1,则失败 2 次后将发送邮件通知我,
3、当测试结果 100%成功时则不会发送邮件

84
4、写代码 java 编写 beanshell 后置处理器
10.14 pytest 如何做断言?
用 assert 断言
1,断言返回的结果
2,进行逻辑检查,检查数据库产生的数据
10.15 patent 中如何去调取其他用例中返回的参数?
把返回的值定义成全局变量
global a_id #定义成一个全局变量
a_id = incharge_id
10.16 你们做接口自动化,用例数据是怎么组织,管理的?
用例数据这块,当时公司要求使用 excel 表格来进行管理,其实这里主要也是为了实现数据与脚本的
分离,提高整个工程后期的维护与优化,这里把数据封装到 excel 表格之后。
我们在脚本中通过调用封装好的读取 excel 表格的数据函数,对 excel 表格中的用例数据,
我们是这么组织的,会有以下几个字段像用例标题,请求地址,请求方式,请求头,请求参数,响应
结果,这个几个部分,对于请求头跟请求参数,因为脚本中发请求都是通过组装成字典的形式来发送
的所以这里我们也是通过类似于字典的形式文本格式来进行组织,主要就是方便后期脚本的提取与引
用其实我觉得,这样去处理的好处就是,后期如果用例数据有变动,或者需要增加或删除部分
用例直接针对 excel 表格数据进行操作就可以了,不需要改动脚本这也就方便整个项目工程的管理与
维护了。
10.17 requests 中如何进行动态关联
1,如果返回的是 cookies 值,可以直接返回接口的 r.cookies
2,返回的是 str 类型数据,可以导入 re 模块进行正则表达式提取返回数据格式是 json 格式,
导入 json,把 json 数据格式转化 python 对象
json.dumps 将 Python 对象编码成 JSON 字符串
json.loads 将已编码的 JSON 字符串解码为 Python 对象
10.18 你们 python 接口自动化怎么去处理 cookie, session 的?
对于 cookie,session 的处理一般有三种方式:
第一种就是先获取登录请求的 cookie 值,然后发送其他请求的时候,在 requests 提供的
两个方法 get 或 post 方法中有一个 cookies 参数,我们可以通过这个参数来传递 cookies 值
第二种就是通过订制请求头,然后把获取到的 coookies 放在请求头中,通过请求头来进行传递

85
第三种就是通过创建一个 session 会话对象,后期所有的请求发送都通过调用这个 session 会话对象
来进行发请求,如果是登录请求,它会自动保存 cookies 值,然后其他需要用到 cookies 值的请求,
也通过 session 对象来发送,它会自动把 cookies 发送出去,对于 cookies, session 的处理,我们
差不多都是通过以上三种方式来实现的

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/236431.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】C语言实现堆(附完整运行代码)

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 一.了解项目功能 二.项目功能演示(以大堆为例) 三.逐步实现项目功能模块及其逻辑详解 1.实现堆程序主函数 2.创建堆结构 3.堆的初始化 4.数据元素入堆 5.数据元素…

Linux上编译和测试V8引擎源码

介绍 V8引擎是一款高性能的JavaScript引擎,广泛应用于Chrome浏览器和Node.js等项目中。在本篇博客中,我们将介绍如何在Linux系统上使用depot_tools工具编译和测试V8引擎源码。 步骤一:安装depot_tools depot_tools是一个用于Chromium开发…

边缘智能网关如何应对环境污染难题

随着我国工业化、城镇化的深入推进,包括大气污染在内的环境污染防治压力继续加大。为应对环境污染防治难题,佰马综合边缘计算、物联网、智能感知等技术,基于边缘智能网关打造环境污染实时监测、预警及智能干预方案,可应用于大气保…

【华为OD题库-076】执行时长/GPU算力-Java

题目 为了充分发挥GPU算力,需要尽可能多的将任务交给GPU执行,现在有一个任务数组,数组元素表示在这1秒内新增的任务个数且每秒都有新增任务。 假设GPU最多一次执行n个任务,一次执行耗时1秒,在保证GPU不空闲情况下&…

ELK综合案例

综合案例 ELKfilebeatnginxjson nginx配置 1,在nginx服务器上安装nginx # yum install epel-release # yum install nginx 2,将nginx日志改成json格式,这样各个字段就方便最终在kibana进行画图统计了 # vim /etc/nginx/nginx.conf ​ http {log_format main $remote_ad…

解决Git提交错误分支

如果 Git 提交到错误的分支&#xff0c;可以通过以下步骤将其转移到正确的分支上&#xff1a; 1.检查当前所在的分支&#xff0c;可以通过 git branch 命令查看。 git branch2.切换到正确的分支&#xff0c;可以通过 git checkout <正确的分支名> 命令进行切换。 git …

windows系统proteus中Ardunio Mega 2560和虚拟机上Ubuntu系统CuteCom进行串口通信

在文章利用proteus实现串口助手和arduino Mega 2560的串口通信-CSDN博客 中&#xff0c;实现了windows系统的proteus中Ardunio Mega 2560和SSCOM通过虚拟串口进行通信。虚拟串口的连接示意图如下图所示。 在文章windows系统和虚拟机上ubuntu系统通过虚拟串口进行通信-CSDN博客…

高级网工在Linux服务器抓包,少不了这几条常用的tcpdump命令。

Linux 的命令太多&#xff0c;tcpdump 是一个非常强大的抓包命令。有时候想看线上发生的一些问题&#xff1a; nginx 有没有客户端连接过来…… 客户端连接过来的时候 Post 上来的数据对不对…… 我的 Redis 实例到底是哪些业务在使用…… tcpdump 作为网络分析神器就派上用场…

2023年四川网信人才技能大赛 实操赛Writeup

文章目录 Crypto比base64少的baseaffine简单的RSA Misc不要动我的flagSimpleUSB猜猜我是谁不聪明的AI Pwngetitezbbstack Reverse谁的DNA动了Dont Touch Me Weblittle_gamejustppbezbbssmart 题目附件&#xff0c;文章末尾微信公众号点点关注亲&#xff0c;谢谢亲~ 题目附件链接…

Ubuntu安装TensorRT

文章目录 1. 安装CUDAa. 下载CUDAb. 安装CUDAc. 验证CUDA 2. 安装CUDNNa. 下载CUDNNb. 安装CUDNNc. 验证CUDNN 3. 安装TensorRTa. 下载TensorRTb. 解压TensorRTc. 安装TensorRTd. 安装uff和graphsurgeone. 验证是否安装成功f. 备注 关注公众号&#xff1a;『AI学习星球』 回复&…

机器学习算法性能评估常用指标总结

考虑一个二分问题&#xff0c;即将实例分成正类&#xff08;positive&#xff09;或负类&#xff08;negative&#xff09;。对一个二分问题来说&#xff0c;会出现四种情况。如果一个实例是正类并且也被 预测成正类&#xff0c;即为真正类&#xff08;True positive&#xff0…

Halcon 简单的ORC 字体识别

文章目录 仿射变化识别使用助手自己训练 仿射变化 将图片进行矫正处理 dev_close_window() dev_open_window(0, 0, Width, Height, black, WindowHandle) read_image(Image,C:/Users/Augustine/Desktop/halcon/image.png) *获取图片的大小 get_image_size(Image, Width, Height…

宝塔面板部署Apache服务器搭建本地站点发布到公网可访问【内网穿透】

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家…

什么是HTTP/2?它与HTTP/1.x相比有什么改进?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

php 接入 百度编辑器

按照github上的操作下载百度编辑器的包后&#xff0c;根据文档上的步骤操作&#xff08;可能会遇到报错&#xff09;&#xff1a; 1、git clone 仓库 2、npm install 安装依赖&#xff08;如果没有安装 grunt , 请先在全局安装 grunt&#xff09; 我的是报了下面的错&#…

安装Nacos2.2.3集群

目录 一、传统方式安装 二、Docker安装 一、传统方式安装 1、配置jdk环境 vi /etc/profile JAVA_HOME/usr/local/java JRE_HOME/usr/local/java/jre CLASSPATH.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib PATH$JAVA_HOME/bin:$PATH export PATH JAVA_…

windows启动出现 zookeeper此处不应有java

可能是Java 路径出了问题&#xff0c;这个programFiles直接有空格&#xff0c;没错就有空格&#xff0c;笔者一开始以为这么点算什么空格&#xff0c;需要把这个对应的Java文件到别的英文路径下&#xff0c;并且修改环境变量。就可以启动的。 还可以启动方式有很多种&#xff0…

vs vue项目目录说明

vue项目目录结构说明 视图&#xff1a; 主要描述src和依赖配置 src下 assets:存放需要用到的静态资源文件的地方 如css.js.img.view等 commponents:存放一些通用的组件&#xff1b;例&#xff1a;在开发当中如果有需要抽出来的公用模块&#xff0c;可以封装为通用组件&#xf…

【C++】异常 -- 详解

一、C 语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 终止程序&#xff0c;如 assert&#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除 0 错误时就会终止程序。 返回错误码&#xff0c;缺陷&#xff1a;需要程序员自己去查找对应的错误。…

vulnhub靶机hacksudo FOG

下载地址&#xff1a;hacksudo: FOG ~ VulnHub 主机发现 目标148 端口扫描 IP过多整理一下 扫描服务 漏洞扫描 去80看看 经典凯撒&#xff0c;后面还是一个github 好好好&#xff0c;mp4 接下来目录爆破 一个一个去看 失败了换一个 少模块&#xff0c;有点麻烦&#xff0c;直接…