python使用requests+excel进行接口自动化测试

在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学,高效且可扩展的语言,自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库,能够帮助我们轻松地开发接口自动化测试,更快更好地完成测试工作。

下面是这两个库在接口自动化测试中可带来的好处:

1. requests可以方便地模拟发送HTTP请求,实现接口测试,支持GET、POST、PUT、DELETE等请求方式。使用requests,我们可以轻松实现对接口的请求及返回结果的处理。

import requests
response = requests.get('http://example.com')

2. requests提供了对HTTP头的复杂处理和特定认证方案的支持,包括Basic,Digest,OAuth等。这意味着我们可以轻松地实现接口的授权认证。

import requests
response = requests.get('http://example.com', auth=('user', 'pass'))

3. requests支持Cookie和Session的处理,可以用来保证用户的身份认证或后续请求的连续性。这对于需要进行多次调用接口的测试非常有用。

4. xlwt库支持将测试结果以Excel格式将结果输出或记录。接口自动化测试有的时候需要输出测试报告,xlwt可以方便地将测试结果输出为Excel表格。

import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')
sheet.write(0, 0, '接口名称')
sheet.write(0, 1, '测试结果')
sheet.write(1, 0, 'test API')
sheet.write(1, 1, 'Pass')
book.save('result.xls')

5. xlwt库为测试结果提供格式化的输出,用户可以自定义表格样式以及表格内容的格式、字体、颜色、边框等,以便用户快速理解接口测试结果,对其做出有效的应对。

综上所述,requests和xlwt是Python的两个基础库,它们能够方便地完成接口自动化测试,并且大大提高测试的效率和精度。因此,如果您还没有使用它们进行接口自动化测试,不妨试试看以下的接口自动化测试框架DEMO。

完整代码

import requests
import xlwt
import xlrd
import unittest
class BaseTestCase(unittest.TestCase):url = ""  # 接口请求的 URLmethod = "GET"  # 接口请求的方法data = {}  # 接口请求的数据headers = {}  # 接口请求的头部expected_code = 200  # 预期的 HTTP 状态码expected_result = {}  # 预期的响应结果def setUp(self):"""每个测试方法执行前调用"""passdef tearDown(self):"""每个测试方法执行后调用"""passdef run_case(self, case):"""动态创建的测试方法,执行测试用例"""self.url = case['url']self.method = case['method']self.data = case['data']self.headers = case.get('headers', {})self.expected_code = case.get('expected_code', 200)self.expected_result = case.get('expected_result', {})self.test_api()def test_api(self):"""测试用例实现"""response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)self.assertEqual(response.status_code, self.expected_code)  # 断言响应的 HTTP 状态码是否与预期一致self.assertDictEqual(response.json(), self.expected_result)  # 断言响应的结果是否与预期一致
def read_excel(file_path, sheet_name):workbook = xlrd.open_workbook(file_path)  # 打开 Excel 文件sheet = workbook.sheet_by_name(sheet_name)  # 获取 Excel 工作表rows = sheet.nrows  # 获取行数cases = []for i in range(1, rows):  # 从第 2 行开始读取测试用例case = {}case['url'] = sheet.cell_value(i, 0)  # 读取接口请求的 URLcase['method'] = sheet.cell_value(i, 1)  # 读取接口请求的方法case['data'] = sheet.cell_value(i, 2)  # 读取接口请求的数据case['headers'] = sheet.cell_value(i, 3)  # 读取接口请求的头部case['expected_code'] = int(sheet.cell_value(i, 4))  # 读取预期的 HTTP 状态码case['expected_result'] = eval(sheet.cell_value(i, 5))  # 读取预期的响应结果case['name'] = sheet.cell_value(i, 6)  # 读取用例名称cases.append(case)return cases
def write_excel(file_path, sheet_name, cases):workbook = xlwt.Workbook()sheet = workbook.add_sheet(sheet_name)sheet.write(0, 0, '用例编号')sheet.write(0, 1, '用例名称')sheet.write(0, 2, '测试结果')for i, case in enumerate(cases):sheet.write(i+1, 0, i+1)sheet.write(i+1, 1, case.get('name', '') or case['url'])sheet.write(i+1, 2, '通过' if case.get('result') else '失败')workbook.save(file_path)
if __name__ == '__main__':cases = read_excel('cases.xlsx', 'Sheet1')  # 读取测试用例suite = unittest.TestSuite()  # 创建测试套件for case in cases:case_name = case.get('name', '') or case['url']setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))# 动态创建测试方法,并将测试用例绑定到测试方法上unittest.TextTestRunner().run(suite)  # 执行测试套件write_excel('report.xls', 'Sheet1', cases)  # 写入测试结果报告

下面详细介绍一下⬆️上方代码

1. 安装所需要的库和依赖项

pip install requests
pip install xlwt

2. 编写接口自动化测试基类及测试用例实现

import requests
import xlwt
import unittest
class BaseTestCase(unittest.TestCase):url = ""  # 接口请求的 URLmethod = "GET"  # 接口请求的方法data = {}  # 接口请求的数据headers = {}  # 接口请求的头部expected_code = 200  # 预期的 HTTP 状态码expected_result = {}  # 预期的响应结果def setUp(self):"""每个测试方法执行前调用"""pass  # 可以进行一些初始化工作def tearDown(self):"""每个测试方法执行后调用"""pass  # 可以进行一些清理工作def test_api(self):"""测试用例实现"""response = requests.request(self.method, url=self.url, headers=self.headers, data=self.data)self.assertEqual(response.status_code, self.expected_code)  # 断言响应的 HTTP 状态码是否与预期一致self.assertDictEqual(response.json(), self.expected_result)  # 断言响应的结果是否与预期一致

3. 编写 Excel 文件读取和解析函数

import xlrd
def read_excel(file_path, sheet_name):workbook = xlrd.open_workbook(file_path)  # 打开 Excel 文件sheet = workbook.sheet_by_name(sheet_name)  # 获取 Excel 工作表rows = sheet.nrows  # 获取行数cases = []for i in range(1, rows):  # 从第 2 行开始读取测试用例case = {}case['url'] = sheet.cell_value(i, 0)  # 读取接口请求的 URLcase['method'] = sheet.cell_value(i, 1)  # 读取接口请求的方法case['data'] = sheet.cell_value(i, 2)  # 读取接口请求的数据case['headers'] = sheet.cell_value(i, 3)  # 读取接口请求的头部case['expected_code'] = int(sheet.cell_value(i, 4))  # 读取预期的 HTTP 状态码case['expected_result'] = eval(sheet.cell_value(i, 5))  # 读取预期的响应结果cases.append(case)return cases

4. 编写 Excel 结果报告写入函数

def write_excel(file_path, sheet_name, cases):workbook = xlwt.Workbook()sheet = workbook.add_sheet(sheet_name)sheet.write(0, 0, '用例编号')sheet.write(0, 1, '用例名称')sheet.write(0, 2, '测试结果')for i, case in enumerate(cases):sheet.write(i+1, 0, i+1)sheet.write(i+1, 1, case.get('name', ''))sheet.write(i+1, 2, '通过' if case.get('result') else '失败')workbook.save(file_path)

5. 编写主函数

if __name__ == '__main__':cases = read_excel('cases.xlsx', 'Sheet1')  # 读取测试用例suite = unittest.TestSuite()  # 创建测试套件for case in cases:case_name = case.get('name', '') or case['url']setattr(BaseTestCase, 'test_{}'.format(case_name), lambda self, case=case: self.run_case(case))# 动态创建测试方法,并将测试用例绑定到测试方法上unittest.TextTestRunner().run(suite)  # 执行测试套件write_excel('report.xls', 'Sheet1', cases)  # 写入测试结果报告

这是一个简单的Python接口自动化测试项目,可以通过Excel 文件管理测试用例,支持多种 HTTP 请求方法和数据格式,适用于各种接口自动化测试场景。

读到这了,希望能够“分享并转发文章”让更多同学知道。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

本地仓库转为git仓库推送到gitee

通常有两种获取 Git 项目仓库的方式: 方式一:将尚未进行版本控制的本地目录转换为 Git 仓库; 方式二:从其它服务器 克隆 一个已存在的 Git 仓库。 两种方式都会在你的本地机器上得到一个工作就绪的 Git 仓库。 方式一&#xff1a…

Linux之centos7安装配置及Linux常用命令

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《LInux实战开发》。🎯🎯 …

java入坑之运行管理

一、概述 1.1Java开发和运行过程 编写阶段:采用各种编辑工具,编写.java文件编译阶段:采用javac.exe对java文件编译,产生.class文件运行阶段:采用java.exe加载.class文件运行 详细过程 1.2相关概念 javaOS管理 JavaOS是…

2023-2024-1 高级语言程序设计-函数

6-1 求m到n之和 本题要求实现一个计算m~n&#xff08;m<n&#xff09;之间所有整数的和的简单函数。 函数接口定义&#xff1a; int sum( int m, int n ); 其中m和n是用户传入的参数&#xff0c;保证有m<n。函数返回的是m~n之间所有整数的和。 裁判测试程序样例&…

excel技巧

excel技巧 &#x1f353;选中&#x1f353;填充&#x1f353;日期&#x1f352;&#x1f352; 日期快捷方式&#x1f352;&#x1f352; 日期计算&#x1f352;&#x1f352;时间相减 &#x1f353;求和&#x1f353;去除小数点&#x1f353;美化表格&#x1f352;&#x1f352…

SpringCloud(三) Ribbon负载均衡

SpringCloud(二) Eureka注册中心的使用-CSDN博客 在SpringCloud(二)中学习了如何通过Eureka实现服务的注册和发送,从而通过RestTemplate实现不同微服务之间的调用,加上LoadBalance注解之后实现负载均衡,那负载均衡的原理是什么呢? 目录 一, 负载均衡 1.1 负载均衡原理 1.2 源…

QMS质量检验管理|攻克制造企业质量检验难题,助力企业提质增效

在日益激烈的市场竞争中&#xff0c;对产品质量严格把关&#xff0c;是制造企业提高核心竞争力与品牌价值的关键因素。那如何高效、高质地完成产品质检工作&#xff1f;这就需要企业在工业质检中引进数字化技术加以辅助&#xff0c;进而推动智能制造高质量发展。 蓝库云QMS质量…

深度学习之基于YoloV5火灾烟雾报警系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、火灾烟雾报警系统四. 总结 一项目简介 YoloV5 是深度学习中用于目标检测的一种算法&#xff0c;可以对输入的图像进行识别&#xff0c;标识出…

3.15每日一题(分部积分求不定积分)

解法一&#xff1a;令lnx等于t&#xff1b;求出x与t的关系&#xff0c;带入f(lnx)的式子中&#xff1b;通过凑微分&#xff0c;分部积分等方法求出答案 注&#xff1a;在分部积分后&#xff0c;求不定积分时 &#xff08;1&#xff09;可以加项减项拆的方法求&#xff08;常规…

算法学习打卡day40|343. 整数拆分、96.不同的二叉搜索树

343. 整数拆分 力扣题目链接 题目描述&#xff1a; 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 1&#xff1a; 输入: n 2 输出: 1 解释: 2 1 …

基于深度学习网络的美食检测系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 % 图像大小 image_size [224 224 3]; num_classes size(VD,2)-1;% 目标类别数量…

vscode开启emmet语法

需要在setting.json中添加配置 首先进入设置&#xff0c;然后点击右上角 Vue项目添加如下配置 "emmet.syntaxProfiles": { "vue-html": "html", "vue": "html" },React项目添加如下配置 "emmet.includeLanguages&quo…