当前位置: 首页 > news >正文

python 接口自动化测试 pdf_Python接口自动化测试实战

在当前互联网产品更新迭代的快节奏下,回归测试的时间被严重压缩,在金融领域和其他互联网应用场景下,支付、转账、清算往往是核心功能,为了确保资金安全和快速到账,接口在对用户名、账户名中的特殊字符的正确处理显得尤为重要。

特殊字符极其丰富,手工测试往往需要耗费大量成本,接口自动化测试因其实现简单、维护成本低、容易提高覆盖率等特点,越来越受重视。

Python由于可移植性好、第三方库丰富、上手简单而成为一种便捷高效的接口自动化测试工具。使用python向接口发送请求,一般包含以下步骤:

1.请求的组装:请求信息一般包含接口的URL,以及一些其他可能需要的信息,比如headers,post请求需要用的data等;

2.请求的发送:请求组装好后进行请求的发送,一般分为GET和POST方法,如果需要向接口传输数据,可以在data中传输,并获取返回数据;

3.响应的解析:接收返回的数据并进行解析。

Python实现了成熟的请求方法,目前新版的python3版本较好地支持第三方库requests,灵活组装请求,发送请求,获取响应信息,支持JSON、文件等多种数据传输格式。

安装好requests后,导入,并简单组装一个get请求:

#导入requests包

import requests

#接口URL,这里以一个虚拟网址为例

response = requests.get(url)

print(response.txt)

带有数据的post请求:

import requests

data = '''{

"name": "张三",

"age": 18

}'''

response = requests.post(url=url, data=data)

print(response.text)

在日常接口测试中,经常需要设计反向案例验证接口对于异常场景的覆盖,比如对特殊字符的处理,依赖人工输入验证比较低效,利用python读取特殊字符集的账号,传入请求数据中,即可快速完成特殊字符集的接口测试,满足多种场景的测试。

利用python的csv模块读取储存字符集的csv文件的方法如下:

import csv

with open('data.csv', 'r') as f:

reader = csv.reader(f)

print(type(reader))

for row in reader:

print(row)

下面以简单的汇款场景为例,进行特殊字符集的接口测试。首先构造接口的输入数据,以字典格式定义;读取特殊字符集,以列表储存;接下来就可以构造请求内容:遍历列表,替换账户名中的字符为特殊字符,发起请求,读取响应结果。具体步骤和代码如下。

import requests, csv

#构造输入数据

data = {

“sendaccnm”: “王小林”,

“sendaccno”: “1234567890”,

“sendbkno”: “103100000026”,

“recvaccnm”: “马小腾”,

“recvaccno”: “2345678901”,

“recvbkno”: “105100000017”

}

#定义列表,读取特殊字符集文件,列表储存

li = []

with open('data.csv', 'r') as f:

reader = csv.reader(f)

for row in reader:

li.append(row[0])

#替换data中的数据,产生带有特殊字符的户名数据并发起请求

for i in range(len(li)):

new_accnm = data.get("sendaccnm").replace(data.get("sendaccnm")[1],li[i])

data["sendaccnm"]=new_accnm

print(data) #可打印一下替换后的数据

response = requests.post(url=url, data=data)

print(response.text) #打印响应数据

请求数据中,原账户名都已经被替换成带有特殊字符的账户名,对于生僻字、少数民族姓名、外国人姓名等含特殊字符的场景,实现了特殊字符的接口自动化测试。

每天学点干货技能:知乎1000W+人热议:面试想拿10K,HR说你只值7K,怎么办?​mp.weixin.qq.com

相关文章:

  • python word2vec库_使用Python可视化Word2vec的结果
  • python标准库生成随机数_数字和数学模块 - random —- 生成伪随机数 - 《Python 3.7 标准库》 - 书栈网 · BookStack...
  • vscode python自动补全插件_基础讲解:VSCode中自动为Python文件添加头部注释
  • 交换机工作原理_交换机、路由器如何传输?网速慢是什么原因?两个视频了解清楚...
  • word 代码块_word中快速去除文档中的超链接网址
  • zabbix安装部署windows_zabbix、cacti、nagios,服务器监控还有更好的选择吗?
  • 功放音量调节原理_匹配度高才能出好效果!关于功放和低音喇叭的匹配
  • 顶级数据团队建设全景报告_清华大学amp;大数据文摘:2020年顶级数据团队建设全景报告(中文,可下载)...
  • 挂载硬盘 linux_Linux怎么挂载移动硬盘光盘U盘之案例分享
  • 基于html的日历系统_怎样设计通知系统,才能有更好的使用体验?
  • 单调不减序列查询第一个大于等于_【算法打卡】将数组拆分成斐波那契序列
  • python怎样进行主键合并_如何在Djang中为我的模型设置两个主键字段
  • python捕捉warning_python – 捕获OptimizeWarning作为例外
  • python 复制图片到剪贴板_JS实现将图片复制到剪贴板
  • 马斯洛需求的五个层次_如何合理满足孩子需求?善用马斯洛需求层次理论,你也是聪明家长...
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【comparator, comparable】小总结
  • 2017前端实习生面试总结
  • 30秒的PHP代码片段(1)数组 - Array
  • CSS 三角实现
  • Docker入门(二) - Dockerfile
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • Js实现点击查看全文(类似今日头条、知乎日报效果)
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Objective-C 中关联引用的概念
  • web标准化(下)
  • Yii源码解读-服务定位器(Service Locator)
  • 简单数学运算程序(不定期更新)
  • 聚簇索引和非聚簇索引
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • mysql面试题分组并合并列
  • 数据可视化之下发图实践
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ${ }的特别功能
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .net core 依赖注入的基本用发
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net 微服务 服务保护 自动重试 Polly
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net项目IIS、VS 附加进程调试
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • @PreAuthorize注解
  • []我的函数库
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [AIGC] MySQL存储引擎详解
  • [AIGC] SQL中的数据添加和操作:数据类型介绍
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [AutoSAR 存储] 汽车智能座舱的存储需求