天花板级,Python接口自动化测试-接口关联封装调用(实例)

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

流程相关的接口,主要用 session 关联,如果写成函数,s 参数每个函数都要带,每个函数多个参数,这时候封装成类会更方便。以发布文章为例

接口封装大致流程

1、在接口测试中,有些接口经常会被用到比如登录的接口,这时候我们可以每个接口都封装成一个方法,如:登录、保存草稿、发布随笔、删除随笔,这四个接口就可以写成四个方法

2、接口封装好了后,后面我们写用例那就直接调用封装好的接口就行了,有些参数,可以参数化,如保存草稿的 title 和 body 两个参数是动态的。调用时直接将其传入方法中,就可以了

3、像这种流程类的接口,后面的会依赖前面的,我们就可以通过 session将其关联起来

4、将自动化测试脚本保存到 login.py文件中,这样就可以是脚本和业务分离

实战实例

第一步:在pycharm中左上角点击“file”,然后点击“New Project”,修改名字为“jiekou”,点击“Create”

31

第二步:在jiekou文件夹下,分别创建python package分别命名为“blog”和“case”

32

第三步:都完成后,如下

33

第四步:在login.py文件中编辑自动化测试脚本

34

用例导入接口
1、导入上面 login.py 模块写的接口自动化测试脚本

35

2、在test_01.py中编辑测试用例

36

参考代码

login.py文件

import requests
import urllib3urllib3.disable_warnings()
import warningswarnings.simplefilter("ignore", ResourceWarning)class Blog():def __init__(self, s):s = requests.session()  # 全局参数self.s = sdef login(self):'''登录接口'''url = "http://localhost:8080/jenkins/j_acegi_security_check"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0"}  # get方法其它加个ser-Agent就可以了d = {"j_username": "admin","j_password": "111111","from": "","Submit": u"登录","remember_me": "on"}s = requests.session()r = s.post(url, headers=headers, data=d)# print (r.content.decode('utf-8'))# 正则表达式提取账号和登录按钮import ret = re.findall(r'<b>(.+?)</b>', r.content.decode('utf-8'))  # 用python3的这里r.content需要解码print(t[0])print(t[1])def get_postid(self, r2_url):'''正则表达式提取'''import repostid = re.findall(r"postid=(.+?)&", r2_url)print(postid)  # 这里是 list []# 提取为字符串print(postid[0])return postid[0]def save(self, title, body):'''保存草稿箱:参数 1:title # 标题参数 2:body # 中文'''url2 = "https://i.cnblogs.com/EditPosts.aspx?opt=1"d = {"__VIEWSTATE": "","__VIEWSTATEGENERATOR": "FE27D343","Editor$Edit$txbTitle": title,"Editor$Edit$EditorBody": "<p>%s</p>" % body,"Editor$Edit$Advanced$ckbPublished": "on","Editor$Edit$Advanced$chkDisplayHomePage": "on","Editor$Edit$Advanced$chkComments": "on","Editor$Edit$Advanced$chkMainSyndication": "on","Editor$Edit$lkbDraft": "存为草稿",}r2 = self.s.post(url2, data=d, verify=False)  # 保存草稿箱print(r2.url)return r2.urldef del_tie(self, postid):'''删除帖子'''del_json = {"postId": postid}del_url = "https://i.cnblogs.com/post/delete"r3 = self.s.post(del_url, json=del_json, verify=False)print(r3.json()["isSuccess"])return r3.json()if __name__ == "__main__":s = requests.session()Blog(s).login()

test_01.py

import unittest
import requests
import warnings
from blog.login import Blogclass Test(unittest.TestCase):def setUp(self):warnings.simplefilter("ignore", ResourceWarning)s = requests.session()self.blog = Blog(s)def test_login_01(self):self.blog.login()print(result)print(type(result))print(result["success"])  # 登录,获取结果self.assertEqual(result["success"], True)  # 拿结果断言def test_del_02(self):# 第一步:登录self.blog.login()# 第二步:保存r2_url = self.blog.save(title="流程类接口关联", body="学习和使用封装与调用--流程类接口关联")pid = self.blog.get_postid(r2_url)# 第三步:删除result = self.blog.del_tie(pid)print(result)self.assertEqual(result["isSuccess"], True)if __name__ == "__main__":unittest.main()
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

人生之旅,充满艰辛与风雨,但只要心怀梦想,敢于追逐,勇往直前,终将获得耀眼的成功之光。不放弃,不言败,坚持奋斗,你将书写属于自己的壮丽传奇,创造无限可能!

在追逐梦想的征程中,不要畏惧失败与挑战,坚持努力,不断超越自我。因为只有奋斗才能成就辉煌,只有拼搏才能收获喜悦。相信自己的能力,勇往直前,你将开启一段不平凡的人生旅程!

努力不是选择,而是唯一的可能。不论遇到多大的困难与挑战,都要坚持前行,勇往直前。相信自己的能力,发挥潜力,每一步都将离梦想更近一步。

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

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

相关文章

docker基本使用方法

docker使用 1. Docker 介绍 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。Docker 使您能够将应用程序与基础架构分开&#xff0c;从而可以快速交付软件。通过利用 …

MySQL_多表查询

多表查询 概述&#xff1a;多表查询就是多张表之间的查询。 回顾&#xff1a;SELECT * FROM table_name 多表查询 from 后面就得跟多张表。如&#xff1a;select * from emp,dept 笛卡尔积&#xff1a;笛卡尔积在数学中&#xff0c;表示两个集合&#xff0c;集合 A 和集合 …

Django实现音乐网站 ⑽

使用Python Django框架制作一个音乐网站&#xff0c; 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…

# X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系

X11、Xlib、XFree86、Xorg、GTK、Qt、Gnome和KDE之间的关系 很多人对于他们是啥是傻傻分不清的&#xff0c;我做了个表格供大家参考。 摘抄&#xff1a; X11是X Window System Protocol, Version 11&#xff08;RFC1013&#xff09;&#xff0c;是X server和X client之间的通…

Android多渠道打包+自动签名工具 [原创]

多渠道打包自动签名工具 [原创] github源码&#xff1a;github.com/G452/apk-packer 如果觉得有帮助可以点个小星星支持一下&#xff0c;万分感谢&#xff01; 使用步骤&#xff1a; 1、在apk-packer.exe目录内放入打包需要的配置&#xff1a; 1&#xff09;签名文件.jks2&am…

flutter开发实战-just_audio实现播放音频暂停音频设置音量等

flutter开发实战-just_audio实现播放音频暂停音频设置音量等 最近开发过程中遇到需要播放背景音等音频播放&#xff0c;这里使用just_audio来实现播放音频暂停音频设置音量等 一、引入just_audio 在pubspec.yaml引入just_audio just_audio: ^2.7.0在iOS上&#xff0c;video_p…

Michael.W基于Foundry精读Openzeppelin第23期——ERC165Checker.sol

Michael.W基于Foundry精读Openzeppelin第23期——ERC165Checker.sol 0. 版本0.1 ERC165Checker.sol 1. 目标合约2. 代码精读2.1 supportsERC165InterfaceUnchecked(address account, bytes4 interfaceId)2.2 supportsERC165(address account)2.3 supportsInterface(address acc…

springboot整合JMH做优化实战

这段时间接手项目出现各种问题&#xff0c;令人不胜烦扰。吐槽下公司做项目完全靠人堆&#xff0c;大上快上风格注定留下一地鸡毛&#xff0c;修修补补不如想如何提升同事代码水准免得背锅。偶然看到关于JMH对于优化java代码的直观性&#xff0c;于是有了这篇文章&#xff0c;希…

11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;drawio-desktop 21.6.5 更新时间&#xff1a;2023年7月22日 工具简介 开源绘图工具&#xff0c;用Electron编写&#xff0c;…

uniapp文件下载并预览

大概就是这样的咯&#xff0c;文件展示到页面上&#xff0c;点击文件下载并预览该文件&#xff1b; 通过点击事件handleDownLoad(file.path)&#xff0c;file.path为文件的地址&#xff1b; <view class"files"><view class"cont" v-for"(…

PPO和文本生成

策略梯度 策略梯度&#xff08;Policy Gradient&#xff09;方法梯度的计算如下&#xff1a; E ( a t , s t ) ∈ π θ [ A ^ t ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \mathbb E_{(a_t,s_t) \in \pi_\theta}[\hat A_t \nabla_ \theta \log \pi_\theta(a_t | s_t)] E(at​,st…

Nginx的重定向

URI&#xff1a;统一资源标识符&#xff0c;是一种字符串标识&#xff0c;主要是用于标识抽象的或者是物理资源&#xff08;主要是指一些文件视频等等&#xff09; 常用的Nginx正则表达式 ^ 匹配输入字符串的起始位置&#xff08;以......开头&#xff09; $ 匹配输入…

FreeRTOS( 任务与中断优先级,临界保护)

资料来源于硬件家园&#xff1a;资料汇总 - FreeRTOS实时操作系统课程(多任务管理) 目录 一、中断优先级 1、NVIC基础知识 2、FreeRTOS配置NVIC 3、SVC、PendSV、Systick中断 4、不受FreeRTOS管理的中断 5、STM32CubeMX配置 二、任务优先级 1、任务优先级说明 2、任务…

【LeetCode】144. 二叉树的前序遍历、94. 二叉树的中序遍历、145. 二叉树的后序遍历

作者&#xff1a;小卢 专栏&#xff1a;《Leetcode》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 144. 二叉树的前序遍历 144. 二叉树的前序遍历 题目&#xff1a; 给你二叉树的根节点 root &…

保姆级Arcgis安装图文安装教程

参考视频&#xff1a;【钟老师arcGIS从放弃到入门】02软件下载与安装_哔哩哔哩_bilibili 安装包在视频简介中有 注释&#xff1a;安装过程中有犯错误&#xff0c;请耐心看完一遍再跟着操作 &#xff08;一&#xff09;安装包下载 下载视频中分享的压缩包(压缩包密码&#x…

window下部署Yapi接口管理系统部署总结

window下部署Yapi接口管理系统部署总结 YApi 是高效、易用、功能强大的 api 管理平台&#xff0c;旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API&#xff0c;YApi 还为用户提供了优秀的交互体验&#xff0c;开发人员只需利用平…

后端开发8.品牌模块

概述 简介 效果图 数据库设计 DROP TABLE IF EXISTS `goods_brand`;CREATE TABLE `goods_brand` ( `goodsBrandId` int(11) NOT NULL AUTO_IN

04-4_Qt 5.9 C++开发指南_时间日期与定时器

文章目录 1. 时间日期相关的类2. 源码2.1 可视化UI设计2.2 dialog.h2.3 dialog.cpp 1. 时间日期相关的类 时间日期是经常遇到的数据类型&#xff0c;Qt 中时间日期类型的类如下。 QTime:时间数据类型&#xff0c;仅表示时间&#xff0c;如 15:23:13。 QDate:日期数据类型&…

【资料分享】全志科技T507-H工业核心板规格书

1 核心板简介 创龙科技SOM-TLT507是一款基于全志科技T507-H处理器设计的4核ARM Cortex-A53全国产工业核心板&#xff0c;主频高达1.416GHz。核心板CPU、ROM、RAM、电源、晶振等所有元器件均采用国产工业级方案&#xff0c;国产化率100%。 核心板通过邮票孔连接方式引出MIPI C…

QGIS开发五:使用UI文件

前面我们说了在创建项目时创建的是一个空项目&#xff0c;即不使用 Qt 提供的综合开发套件 Qt Creator&#xff0c;也不使用 Qt Visual Studio Tools 这类工具。 但是后面发现&#xff0c;如果我想要有更加满意的界面布局&#xff0c;还是要自己写一个UI文件&#xff0c;如果不…