不仅能满足需求,还能提高效率。教你建立自动化测试请求封装

news2024/12/22 21:00:26

目录

前言:

一、整体框架介绍

二、代码实现

1. config文件配置

2. API封装方法实现

3. 测试用例编写

4. 运行测试用例

三、总结


前言:

在接口自动化测试中,我们都知道一个重要概念就是接口请求封装,可以大幅度提供自动化测试效率,避免了因为请求信息不完整导致的异常请求响应。本文将分享如何利用Python实现这一目标。

一、整体框架介绍

本次项目主要使用Python+requests实现自动化测试的接口请求封装,架构如下:

1. project folder

   - common
   - config
   - logs
   - report
   - testcases(测试用例)
   - api(接口封装调用)

2. common folder  (常用方法封装)

   - logger.py   (封装运行日志)

   - read_config.py   (封装配置文件读取)

   - read_excel.py   (封装Excel读取)

   - write_excel.py  (封装Excel写入)

   - handle_path.py  (封装常用路径地址)

3. config folder  (封装配置信息)

   - config.ini  (封装配置)

4. testcases folder  (放测试用例)

   - test_login.py

   - test_register.py

5. api folder   (封装具体接口请求方法)

   - login_api.py

   - register_api.py

这是一个比较常见的自动化测试框架架构,项目结构比较清晰,方便后期维护和功能扩展,其中common文件夹主要用于封装一些项目中常用的方法,config文件夹封装配置信息等。

二、代码实现

1. config文件配置

在config.ini文件保存以下配置信息:

[api]
# 定义不同环境接口地址,本次以演示环境和测试环境为例
base_url_demo = http://api.demo.com
base_url_test = http://api.test.com

# 登录接口配置信息
login_url = /api/v1/login
login_username = test
login_password = 123456

# 注册接口配置信息
register_url = /api/v1/register
register_username = test
register_password = 123456

# cookie配置信息
cookie_name = session_id

2. API封装方法实现

接下来,我们需要对每个接口编写具体的请求方法,以登录接口为例:

# login_api.py

import requests
from common.read_config import ReadConfig

class LoginApi(object):

    def __init__(self):
        self.rc = ReadConfig()
        self.base_url = self.rc.get_base_url()

    def login(self, username=None, password=None):
        url = self.base_url + self.rc.get_login_url()
        headers = {"Content-Type": "application/json"}
        json_data = {"username": self.rc.get_login_username(),
                     "password": self.rc.get_login_password()}
        response = requests.post(url=url, headers=headers, json=json_data)
        return response.cookies.get(self.rc.get_cookie_name())


在以上代码中,我们根据配置文件中的信息获取接口的地址、请求头、请求数据等信息,将请求过程封装到了一个login方法中,并返回cookie信息。同时,我们也能轻松地扩展其他接口请求方法。

3. 测试用例编写

接下来我们用test_login.py文件实现一个登录的测试用例:

# test_login.py

import unittest
from api.login_api import LoginApi

class TestLogin(unittest.TestCase):

    def setUp(self):
        self.api = LoginApi()

    def test_login(self):
        session_id = self.api.login()
        self.assertIsNotNone(session_id, "登录失败")
        # 登录成功后的操作

    def tearDown(self):
        pass

在以上测试用例代码中,我们先通过setUp()方法获取LoginApi对象并实例化。然后我们编写了一个test_login()方法,该方法首先通过login()方法获取cookie信息。如果获取成功则通过断言判断登录是否成功,如果不成功则会输出"登录失败"的提示信息。

4. 运行测试用例

接下来在项目根路径下执行以下命令,即可运行所有测试用例:

python -m unittest discover -s testcases -p "test_*.py" -v

其中,-m表示执行模块,unittest表示执行Python自带的unittest测试框架,discover表示自动查找测试用例文件,-s指定测试文件的路径,-p表示测试文件的匹配模式,-v表示执行时输出详细信息。

执行完毕后,我们可以在终端中看到测试结果及日志信息。

三、总结

本次分享了一个接口自动化测试框架的封装实战,主要实现了自动化测试的接口请求封装。封装接口请求方法可以避免代码重复,提高代码复用率和可维护性,同时也能大幅提高自动化测试效率。接口自动化测试需要发起http请求,requests库为我们提供了非常便捷的API,通过requests封装,可以提高我们的开发效率,减少开发时间成本。

作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的学习资源,如果你用得到的话可以直接拿走,希望能对你带来帮助。(包括Python编程、WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、性能测试、安全测试、大厂面试真题、简历模板等等),相信能使你更好的进步!

获取方式:留言【自动化测试学习】即可免费获取

【自动化测试交流】:574737577(进群备注ccc)http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=5Yy1aF4jOfrqXFA_eg14oG9EZ5fFbv5A&authKey=zYx3Zivwu55NOCM%2B%2BKqaZjoeTRS5xMdAmfqX%2FyzUm4lvrD4q75P5Ukeg%2FPBRMMbm&noverify=0&group_code=574737577

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中间件(三)- Zookeeper

Zookeeper 1. Zookeeper介绍1.1 什么是Zookeeper1.2 Zookeeper的应用场景 2. 搭建ZooKeeper服务器2.1 下载安装包2.2 配置文件2.3 启动测试 3. Zookeeper内部的数据模型3.1 zk如何保存数据?3.2 zk中的znode是什么样的数据结构3.3 zk中节点znode的类型3.4 zk的数据持久化 4. Zo…

18-01 数据库架构设计综述

数据库架构设计的基本思路 需求分析阶段(最困难、最耗时) 整个设计过程的基础 需求分析做得是否充分以及准确,决定了数据库设计的速度与质量极端场景下,需求分析做得不好,可能会导致整个数据库设计返工、重做 需求分…

RSBBS 报表接口 query跳转 RRI

这里只讲RSBBS的goto query,不讲query里面的替换路径。 报表接口就是从一个query跳转到另一个目的地。从下面能看到,可以跳转到一个BW系统下的query,或者能跳转到ERP系统的一个ABAP report也行,或者可以通过archive link去从quer…

node之excel转化成json格式的数据

1. node环境(自己看教程搭建) 2.安装node-xlsx和fs yarn node-xlsx 3.写代码。简单实例如下(如果需要处理数据,自己处理) 实例: 目录: b.js var xlsx require(node-xlsx); var fs require(fs); const path requ…

基于布谷鸟优化算法(CS)在微电网优化中的应用研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Mybatis】SpringBoot整合Mybatis之增删改查

目录 一、准备 1、选择依赖 2、配置文件 3、映射接口 二、Select 三、Delete 四、Update 五、Insert 一、准备 1、选择依赖 在我们创建SpringBoot项目的时候,需要选择Mybatis与MySQL的依赖 2、配置文件 然后我们需要在配置文件里配置MySQL的连接信息 spr…

UEBA技术在ADAudit Plus中的应用

摘要:用户和实体行为分析(UEBA)技术是当今信息安全领域的重要工具之一。本文将介绍UEBA技术在ADAudit Plus中的应用,探讨其在提供安全性和监控能力方面的优势,并解释为何ADAudit Plus是一种出色的UEBA解决方案。 UEBA …

免费下载|《建设数字中国 升级数智底座-企业数智化底座白皮书》

企业数智化历经多年的演进,已经从最初的“局部推动业务提质增效”,发展为“利用技术全面赋能业务创新活动”,数智化能力的建设正逐步与企业的战略目标深度融合。企业践行数字化优先,以智能化促进发展,根本上需要依托健…

高并发系统的三把利器

目录 1.限流 2.缓存 2.1.缓存的使用场景 3.降级 3.1.什么是降级? 3.2.服务降级方式 4.其他高并发手段 4.1. 集群 4.2.拆分 4.2.1 应用拆分 4.2.2 数据库 4.3. 静态化 4.4.削峰 4.5.限流 5.总结 参考 保护高并发系统的三大利器:限流、熔…

【Proteus仿真】基于VSM 51单片机定时计数器闹钟例程

【Proteus仿真】基于VSM 51单片机定时计数器闹钟例程 🎬例程仿真功能操作演示: ✨本例程可从软件内部所提供的历程中找到,但是需要自行安装SDCC编译器才能对其源代码重新编译。 ⚡需要自行安装SDCC编译器。 🛠Proteus内部安装SDCC编译器方法 🌿将窗口切换到Source Co…

少儿编程 中国电子学会图形化编程等级考试Scratch编程四级真题解析(判断题)2023年3月

2023年3月scratch编程等级考试四级真题 判断题(共10题,每题2分,共20分) 11、在使用自定义积木时,不可以传递布尔型参数 答案:错 考点分析:考查自定义积木的使用,使用自定义积木的时候可以传递数字、文本和布尔型参数,所以错误 12、执行如下图程序后,输出的结果为“…

论文总结+公式分析

目录 1.Learning with Noisy Correspondence for Cross-modal Matching(NCR)1-1.贡献和创新点1-2.图1-2-1.总图1-2-2.Co-divide1-2-3. Co-Rectify1-2-4.Robust Cross-modal Matching 1.Learning with Noisy Correspondence for Cross-modal Matching(NCR) 1-1.贡献和创新点 提…

来报名丨下一代因子挖掘统一框架:打破界限的流式实时计算平台

大家期待已久的量化科技嘉年华,现在正式开启报名啦! 2023年6月2日-3日,DolphinDB 联合主办的 “2023量化科技嘉年华” 将在上海世博中心召开,本次大会主题涵盖因子/数据/交易/算法/算力,通过国内外顶尖量化金融专家最…

AIGC出击研发、营销,文心一言们要改变鞋服行业产业链条?

(图片来源于网络,侵删) 文 | 螳螂观察 作者 | 叶小安 你敢设想这样一种未来吗? 看到的消费品广告都是AI设计的,甚至连电影、电视甚至直播带货都是由AI机器人制作好的画面。 2022年尾,ChatGPT的诞生刷爆…

继内存条、固态硬盘后国产CPU再度发力,性能已媲美10代酷睿

这两年内存条、固态硬盘之内卷,放在整个电脑硬件发展历程中也是相当炸裂了。 国产厂商崛起带动了储存行业飞跃式发展,一是储存芯片成本大幅降低。 二是经历了前几年经济冲击,大家对 PC 电子产品需求明显下滑,各大厂库存难以消化。…

基于html+css的图展示78

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

DRMS-关于开展防范风险整改工作的工作计划

防范风险整改工作 工作计划 2023年5月10日 尊敬的【DRMS】集群用户: 根据河南省郑州市国家高新技术产业开发区市场监督管理局《关于河南数权数字信息科技研究院网络违规整改通知》及…

Unity 动画

Unity现存两套动画系统:Legacy动画系统和Mecanim动画系统。 Unity的Mecanim动画系统,是一套基于状态机的动画控制系统,是一个面向动画应用的动画系统 Animator Avatar:动画节点导引替身,与动画复用(尤其…

四信机房环境监测与安全预警解决方案

随着网络信息技术的不断发展,各行业对计算机依赖性显著提高,机房作为信息交换的枢纽,其数量及建设规模不断扩大。而机房系统的可靠与否直接关系着网络能否正常稳定的运行,因此企业必须严格按照国家相关标准和具体需要建立包含供配…

华为OD机试真题 Java 实现【数字加减游戏】【2023Q1 200分】

一、题目描述 小明在玩一个数字加减游戏,只使用加法或者减法,将一个数字s变成数字t。 每个回合,小明可以用当前的数字加上或减去一个数字。 现在有两种数字可以用来加减,分别为a,其中b没有使用次数限制。 请问小明…