接口自动化框架

article/2025/10/19 0:07:22

接口自动化框架讲解

  • 框架结构

接口测试框架的结构如下图所示:

0

接口测试框架的结构说明:

- API用于封装被测系统的接口(用requests模块封装的请求方法)

- TestCase将一个或多个接口封装成测试用例,并使用UnitTest管理测试用例 TestCase可以

调用数据库进行数据的校验

- 为了方便维护测试数据,可以把测试脚本和测试数据分离开

- 通过UnitTest断言接口返回的数据,并生成测试报告

  • 框架目录结构

0

0

  • 封装TPShop登录接口案例

按照功能模块定义封装被测系统的接口,方便测试脚本的调用,并且能够达到代码的复用。对登录功能的相关接口进行封装,

示例代码:

在login文件中写入: class LoginApi(object): # 初始化 def __init__(self): self.verify_code_url = "xxxx" self.login_url = "yyyy" # 登录过程 # 1.获取验证码 # 2.填写必要数据:用户名,密码,验证码 # 3.点击登录按钮 def get_login_verify_code(self,session): return session.get(self.verify_code_url) def login(self,session,username,password,verify_code): data = { "username":username, "password":password, "verify_code":verify_code }

  • 登录测试用例

将api模块中的一个或多个接口封装成一个测试用例,并使用测试框架UnitTest管理测试用例。定义登录功能的测试用例。示例代码:

在logintestcase文件中写入: import unittest from requests import Session from api.login import LoginApi class LoginTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.login_api = LoginApi() def setUp(self) -> None: self.session = Session() def tearDown(self) -> None: self.session.close() def test_login_success(self): # 请求验证码 response = self.login_api.get_login_verify_code(self.session) self.assertIn("image",response.headers.get("Content-Type")) # 验证码识别:略,8888 # 调用登录方法,发送请求,获取响应数据 res = self.login_api.login(self.session,"13800000002","123456","8888") res = res.json() # 断言 self.assertEqual(200,res.status_code) self.assertEqual(1,res.get("status"))

  • 集成测试报告

使用HTMLTestRunner生成HTML格式的测试报告

注意:需要将HTMLTestRunner.py文件放置在lib中

在run_suite文件写入: import unittest from scripts import logintestcase from lib.HTMLTestRunner import HTMLTestRunner suite = unittest.TestSuite() suite.addTest(unittest.makeSuite(logintestcase.LoginTest)) f = open('D:/JySoft/P6/P6-Django/apiTestFramework/report/report.html','wb') runner = HTMLTestRunner(stream=f,title="asdadf",description="cdsbhucv")

运行run_suite,结果为

0

0

0

参数化处理

  • 参数化分析

0

  • 构建json文件存放测试数据

[ { "username": "15097142681", "password": "13579", "verify_code": "8888", "status": 0, "msg": "账号或密码错误" }, { "username": "", "password": "13579", "verify_code": "8888", "status": 0, "msg": "账号或密码错误" }, { "username": "15097142681", "password": "", "verify_code": "8888", "status": 0, "msg": "账号或密码错误" }

  • 构建参数化数据

def build_data(): with open('../data/data.json','r',encoding='utf-8') as f: content = f.read() data = json.loads(content) d = [] for item in data: d.append((item["username"],item["password"],item["verify_code"],item["status"],item["msg"]))

  • 测试用例实现参数化

# 导包 from parameterized import parameterized class LoginTest(unittest.TestCase): @classmethod def setUpClass(cls) -> None: cls.login_api = LoginApi() def setUp(self) -> None: self.session = Session() def tearDown(self) -> None: self.session.close() @parameterized.expand(build_data) def test_login_success(self,username,password,verify_code,status,msg): # 请求验证码 response = self.login_api.get_login_verify_code(self.session) self.assertIn("image",response.headers.get("Content-Type")) # 验证码识别:略,8888 # 调用登录方法,发送请求,获取响应数据 res = self.login_api.login(self.session,username,password,verify_code) res = res.json() # 断言 self.assertEqual(200,res.status_code) self.assertEqual(status,res.get("status"))

db数据承载形式实现参数化

  • 构建数据库数据

执行SQL脚本,将数据写入数据库中

  • 修改构建数据函数

def build_data(): # 获取数据库的数据 sql = "select * from t_login" db_data = DBUtil.exe_sql(sql) test_data = [] for case_data in db_data: username = case_data[2] password = case_data[3] verify_code = case_data[4] status_code = case_data[5] content_type = case_data[6] status = case_data[7] msg = case_data[8] test_data.append((username,password,verify_code,status_code,content_type,status,msg)) print(test_data)


http://chatgpt.dhexx.cn/article/cchOlsIk.shtml

相关文章

什么是自动化框架?

前言 无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“…

接口自动化框架搭建

1.自动化测试流程 -- 需求分析。需求文档,接口文档,抓包接口 -- 测试计划。通常包含项目的进度,是否自动化,优先级 -- 测试用例(是从手工测试提取出来的) -- 用例评审 -- 执行测试。(写代码…

2023最全自动化测试框架讲解,不会真不行!

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”…

【测试开发】几种常见的自动化测试框架

几种常见的自动化测试框架 在软件测试领域,自动化测试框架有很多,这里主要介绍几种常用的自动化测试框架。 1.pytest pytest 是 Python 的一种单元测试框架,与 Python 自带的 unittest 测试框架类似,但是比 unittest 框架使用起…

【自动化框架】

自动化测试框架就是:为了对一个指定的系统做自动化测试而封装的一个半成品,自动化测试攻城狮可以调用这个半成品封装好的方法去实现一个指定系统的自动化测试。 根据驱动模式不同自动化测试框架分为四种模式: (1) 数据驱动框架 (2) 关键字…

常见的主流自动化测试框架,这5种能帮到你很多

今天我们要向大家介绍的是常见5种主流自动化测试框架,包括优缺点等内容,供大家参考学习。 1.ATF 自动化测试框架AutoTestFramework是B/S架构框架,可实现Selenium等多种自动化测试全流程、团队化管理的高级框架平台,通过集成自动化…

【自动化测试】自动化测试框架与工具

文章目录 1)什么是自动化测试框架?1.1 什么是框架?1.2 什么是自动化测试框架?1.2.1 优点:1.2.2 框架的基本组件1、需要配置文件管理:2、业务逻辑代码和测试脚本分离3、报告和日志文件输出4、自定义的库的封…

从零搭建完整python自动化测试框架(UI自动化和接口自动化 )——持续更新

本自动化测试框架采用python unittest 的基础来搭建,采用PO模式、数据驱动的思想,通过selenium来实现WEB UI自动化,通过request来实现接口自动化。移动终端的自动化也可在该框架基础上去构建补充。 目录 总体框架PO模式、DDT数据驱动、关键字…

Linux必备的小技巧——查看历史操作和屏显信息

通常在linux查看历史操作信息,都是查看日志文件,Linux的日志文件一般都保存在/var/log文件夹下: 用如下命令即可查看: cat filename 查看日志,会打开整个文件,直接跑到最后面tac filena…

linux下安装CUDA和cudnn

linux下安装CUDA和cudnn 2、安装CUDA10.1 在CUDA官网选择系统对应的版本下载CUDA 我的系统是Ubuntu18.04 64位,我选择下载最新版本的CUDA10.1: 输入以下命令安装CUDA sudo sh cuda_10.1.105_418.39_linux.run 显卡驱动已在上面安装了,这里一…

Linux和其他操作系统的区别

前言 这是我听老师讲课做的笔记,考试要看的。 这是视频地址 作者:RodmaChen 关注我的csdn博客,更多Linux笔记知识还在更新 为什么用Liunx系统 Linux和windows的区别Linux和Unix操作系统的区别 Linux和windows的区别 1.免费与收费 Windows 平台: Window…

linux下如何查看驱动?(CH341)

文章目录 背景命令 背景 Linux下有时候我们在接上串口后,在/dev/下找不到ttyUSB*,这时我们需要查看下本机是否安装了相应的驱动。 命令 lsmod | grep ch341 如上图,便是表示目前pc中存在ch341驱动,无需重新安装。

linux怎么查询数据库端口,linux下怎么查看数据库端口

满意答案 ai_yuming 2017.08.26 采纳率:50% 等级:8 已帮助:759人 如何查看mysql 默认端口号和修改端口号 1. 登录mysql [root@test /]# mysql -u root -p Enter password: 2. 使用命令show global variables like port;查看端口号 mysql> show global variables like …

Linux的历史背景和基本指令

众所周知,Linux和大家所熟悉的Windows一样,也是一款操作系统,不同的更多是在于Windows是闭源的,而Linux是开源的。现代生活中的比如飞机的控制系统、银行的系统、手机的系统等等,都和Linux操作系统相关,所以…

Linux安装围棋AI(q5go和katago)

最近一个多月开始学习围棋,因为平时常用的系统是Linux,所以想要在Linux上安装一个围棋AI,可以借助AI分析棋局。经过一番查找,决定使用q5go和katago,安装还是挺复杂的,特地记录(/摸鱼&#xff09…

Linux 常用命令 查看 CPU 信息

强力推荐-不要错过,万一能帮助到自己呢? 推荐一个网站,关于人工智能教程,教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里…

Linux命令查看Linux服务器内存、CPU、显卡、硬盘使用情况

查看内存使用情况 使用命令: free -m 大致结果类似下图: 内存占用情况 参数解释: Mem行(单位均为M): total:内存总数used:已使用内存数free:空闲内存数shared&…

Ai-WB2系列模组linux开发环境搭建

文章目录 一、Ubuntu安装1.1 安装VMware Workstation Pro1.2 安装Ubuntu 二、编译三、烧录固件到设备3.1 方式一:用命令行烧录3.2 方式二:用可视化软件烧录(windows) 三、自定义工程如何修改Makefile四、开发资料 一、Ubuntu安装 …

用js动态显示当前时间

用setTimeout动态显示当前时间&#xff1a; <div class"showTime"></div> <script>var t null;tsetTimeout(time,1000);//开始运行function time(){clearTimeout(t);//清除定时器dt new Date();var y dt.getFullYear();var mt dt.getMonth()1…

js 获取当前gmt时间_javascript怎么获取当前时间?

javascript怎么获取当前时间&#xff1f;下面本篇文章就来给大家介绍一下使用javascript获取当前时间的方法&#xff0c;希望对大家有所帮助。 在JavaScript中可以使用Date对象中的Date()方法来获取当前时间。Date 对象用于处理日期和时间&#xff0c;Date()方法可返回当天的日…