“接口自动化测试是指通过编写代码或使用工具,模拟用户发送请求,验证接口是否符合设计规范和功能需求的过程。”
如何用 python +ddt+excel 实现接口自动化测试
接口自动化测试可以提高测试效率和质量,节省测试成本和时间,保证测试覆盖率和可维护性。
让勇哥带你入门如何用 python +ddt+excel 实现接口自动化测试,请瞧如下内容:
一、准备工作
1. 安装 python 环境
python 是一种简洁、优雅、易学的编程语言,它有丰富的第三方库和社区支持,非常适合用来进行接口自动化测试。安装 python 的3.0以上的版本),并配置好环境变量,以便在命令行中使用 python 命令。
2. 安装相关库
为了进行接口自动化测试,我们需要安装以下几个库:
- requests:用来发送 HTTP 请求,支持各种方法、参数、头部、身份验证等。
- xlrd:用来读取 excel 文件中的数据,支持 xls 和 xlsx 格式。
- openpyxl:用来写入 excel 文件中的数据,支持 xlsx 格式。
- ddt:用来实现数据驱动测试,可以从 excel 文件中读取多组数据,并生成多个测试用例。
- unittest:用来编写和执行测试用例,支持断言、前置后置条件、测试套件等。
- HTMLTestRunner_api:用来生成 HTML 格式的测试报告,支持图表、日志、截图等。
我们可以使用 pip 命令来安装这些库,例如:
pip install requests
二、设计测试
1. 编写 excel 文件
我们需要在 excel 文件中填写接口的相关信息,包括:
- 接口名称
- 请求地址
- 请求方法
- 请求参数
- 预期结果
例如:
编辑
添加图片注释,不超过 140 字(可选)
我们可以将这个 excel 文件保存为 test_data.xlsx,并放在项目的 test_datas 目录下。
2. 封装 excel 操作
为了方便地读取和写入 excel 文件中的数据,我们需要封装一些 excel 操作的函数,例如:
- 打开表单
- 获取表头
- 获取所有数据
- 写入数据
我们可以将这些函数定义在一个类中,并保存为 excel_handler.py,并放在项目的 Lib 目录下。具体代码如下:
python
复制代码
from openpyxl import load_workbookfrom openpyxl.worksheet.worksheet import Worksheetclass ExcelHandler(): '''操作Excel''' def __init__(self, file): '''初始化函数''' self.file = file def open_sheet(self, sheet_name) -> Worksheet: '''打开表单''' wb = load_workbook(self.file) sheet = wb[sheet_name] return sheet def read_rows(self,sheet_name): '''读取除表头外所有数据(除第一行外的所有数据)''' sheet = self.open_sheet(sheet_name) rows = list(sheet.rows)[1:] data = [] for row in rows: row_data = [] for cell in row: row_data.append(cell.value) data.append(row_data) return data
def read_key_value(self,sheet_name): '''获取所有数据,将表头与内容结合整....'''
... return data
3. 封装 requests 请求
为了方便地发送 HTTP 请求,我们需要封装一些 requests 请求的函数,例如:
- 初始化 session
- 发送请求
- 关闭 session
我们可以将这些函数定义在一个类中,并保存为 requests_handler.py,并放在项目的 Lib 目录下。具体代码如下:
import requests
class HTTPHandler:
# 初始化
def __init__(self):
self.session = requests.Session()
# 定义一个方法,接收访问http请求的方式
def visit(self, url, method, params=None, data=None, json=None, **kwargs):
res = self.session.request(method, url, params=params, data=data, json=json, **kwargs)
try:
return res.json()
except ValueError:
print('return not json')
# 关闭session会话
def close_session(self):
self.session.close()
三、执行测试
1. 编写测试用例
我们需要使用 unittest 和 ddt 来编写和执行测试用例,具体步骤如下:
- 导入相关库和模块
- 定义一个测试类,继承 unittest.TestCase
- 定义一个类方法,用来初始化 session 和读取 excel 文件中的数据
- 使用 @ddt.data 装饰器,传入 excel 文件中的数据
- 定义一个测试方法,用来发送请求,并断言响应结果是否符合预期
我们可以将这些代码保存为 test_api.py,并放在项目的 test_cases 目录下。具体代码如下:
from Lib.excel_handler import ExcelHandler
from Lib.requests_handler import HTTPHandler
import requests
import ddt
import unittest
data = ExcelHandler('test_datas/test_data.xlsx').read_key_value('Sheet1')
@ddt.ddt
class TestAPI(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.s = HTTPHandler()
@ddt.data(*data)
def test_api(self,params):
print('params:%s' % params)
case_name = params.get('接口名称')
url = params.get('请求地址')
args = eval(params.get('请求参数')) if isinstance(params.get('请求参数'), str) else params.get('请求参数')
method = params.get('请求方法')
expct_res1 = params.get('预期结果')
# 发起请求,获取返回数据
result = self.s.visit(url, method, params=args)
# 分析返回数据
response_data = result['name']
# 断言响应结果是否符合预期
self.assertEqual(expct_res1, response_data)
@classmethod
def tearDownClass(cls):
cls.s.close_session()
2. 生成测试报告
我们需要使用 HTMLTestRunner_api 来生成 HTML 格式的测试报告,具体步骤如下:
- 导入相关库和模块
- 定义一个测试套件,添加测试用例
- 定义一个测试报告的文件名和路径
- 定义一个测试运行器,传入测试报告的文件对象和相关参数
- 使用测试运行器来运行测试套件
我们可以将这些代码保存为 run.py,并放在项目的根目录下。具体代码如下:
import unittest
from HTMLTestRunner_api import HTMLTestRunner
from test_cases.test_api import TestAPI
# 定义一个测试套件
suite = unittest.TestSuite()
# 添加测试用例
suite.addTest(unittest.makeSuite(TestAPI))
# 定义一个测试报告的文件名和路径
report_file = 'reports/test_report.html'
# 定义一个测试运行器,传入测试报告的文件对象和相关参数
with open(report_file, 'wb') as f:
runner = HTMLTestRunner(f, title='接口自动化测试报告', description='用例执行情况')
# 使用测试运行器来运行测试套件
runner.run(suite)
四、查看结果
运行 run.py 文件后,我们可以在 reports 目录下看到生成的 test_report.html 文件,打开它,我们可以看到以下内容:
我们可以看到,共有 11 个测试用例,通过 6 个,失败 5 个。我们还可以看到每个测试用例的详细信息,包括用例名称、请求地址、请求参数、预期结果、实际结果等。我们还可以看到一些图表、日志、截图等。
这样,我们就完成了用 python +ddt+excel 实现接口自动化测试的过程。
Python 的迅速崛起对整个行业来说都是极其有利的 ,但“人红是非多
”,导致它平添了许许多多的批评,不过依旧挡不住它火爆的发展势头。
如果你对Python感兴趣,想要学习python,这里给大家分享一份Python全套学习资料,都是我自己学习时整理的,希望可以帮到你,一起加油!
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
Python全套学习资料
1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~
③练习题
每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
2️⃣国内外Python书籍、文档
① 文档和书籍资料
3️⃣Python工具包+项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
②Python实战案例
光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
③Python小游戏源码
如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
4️⃣Python面试题
我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
5️⃣Python兼职渠道
而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要的,可以扫描下方👇👇👇二维码免费领取🆓