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

news2024/10/5 16:29:25

目录:导读

    • 前言
    • 一、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 urllib3

urllib3.disable_warnings()
import warnings

warnings.simplefilter("ignore", ResourceWarning)


class Blog():
    def __init__(self, s):
        s = requests.session()  # 全局参数
        self.s = s

    def 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 re
        t = 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 re
        postid = 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.url

    def 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 Blog


class 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.coloradmin.cn/o/860235.html

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

相关文章

go.sum are different when using go mod vendor/download

本地Golang配置 今天本地编译一个项目&#xff0c;遇到以下错误 PS D:\Code\Golang\jiankunking\k8s-ext> go mod tidy go: downloading github.com/huaweicloud/huaweicloud-sdk-go-obs v3.23.4incompatible verifying github.com/gin-gonic/ginv1.7.3: checksum mismat…

【OJ比赛日历】快周末了,不来一场比赛吗? #08.12-08.18 #14场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2023-08-12&#xff08;周六&#xff09; #4场比赛2023-08-13…

flask-migrate使用

1.介绍 # 表,字段发生变化&#xff0c;都会有记录&#xff0c;自动同步到数据库中--》django支持这种操作 # 原生的sqlalchemy&#xff0c;不支持修改表的 # flask-migrate可以实现类似于django的 python manage.py makemigrations #记录 python manage.py migrate …

玩机搞机---小米5x机型定制化系统中的一些奇葩故障与解决

在于各种工作室对接中发现目前小米系列中受欢迎的有小米5x和小米6x mi8这些性价比超值的机型用来使用的较多。而其中5x机型较为特别。此机型涵盖有好几个屏幕。如果工作室商家批量采用的机型偶尔刷回官方系统黑屏。那么就是机型屏幕批次和强解bl锁的原因。 &#x1f494;&…

SpringBoot整合WebSocket详解

环境&#xff1a;Springboot3.0.5 WebSocket介绍 WebSocket协议RFC 6455提供了一种标准化的方式&#xff0c;通过一个TCP连接在客户端和服务器之间建立全双工、双向的通信通道。它是一个不同于HTTP的TCP协议&#xff0c;但设计为在HTTP之上工作&#xff0c;使用80和443端口&am…

【Linux】线程的概念以及与进程的区别

目录 背景知识 什么是线程&#xff1f; 进程和线程的区别 线程的优缺点 背景知识 在了解线程前&#xff0c;我们要首先知道&#xff0c;OS是可以做到让进程进行细粒度划分的! 比如我们所说的进程地址空间中的堆区&#xff0c;它在进程PCB中的mm_structz中有一个start和…

动态规划解0-1背包问题(超详细理解)

前言&#xff1a; 好久没写0-1背包问题了&#xff0c;都有些不记得了&#xff0c;写这篇文章给自己以后做简单参考&#xff0c;如果能同时帮到读者&#xff0c;不胜荣幸。 正文 0-1背包问题是这样的一个问题&#xff0c;假设有一个背包&#xff0c;其容量为 capacity 。在地…

【Spring Boot 源码学习】自动装配流程源码解析(上)

自动装配流程源码解析&#xff08;上&#xff09; 引言往期内容主要内容1. 自动配置开关2. 加载自动配置组件3. 自动配置组件去重 总结 引言 上篇博文&#xff0c;笔者带大家从整体上了解了AutoConfigurationImportSelector 自动装配逻辑的核心功能及流程&#xff0c;由于篇幅…

算法竞赛入门【码蹄集新手村600题】(MT1140-1160)C语言

算法竞赛入门【码蹄集新手村600题】(MT1140-1160&#xff09;C语言 目录MT1141 数字3MT1142 整除的总数MT1143 沙哈德数MT1144 整除MT1145 全部整除MT1146 孙子歌诀MT1147 古人的剩余定理MT1148 隐晦余8MT1149 余数MT1150 战死四五百MT1151 韩信生气MT1152 韩信又生气了MT1153 …

Python 如何获取图片中的文字----OCR安装使用

环境: windows10, anaconda3 背景&#xff1a;使用conda install pytesseract 安装失败 解决方法&#xff1a; 从Index of /tesseract (uni-mannheim.de)中下载最新的安装包 https://digi.bib.uni-mannheim.de/tesseract/tesseract-ocr-w64-setup-5.3.1.20230401.exe 点击…

vscode搭建c语言环境问题

c语言环境搭建参考文章:【C语言初级阶段学习1】使用vscode运行C语言&#xff0c;vscode配置环境超详细过程&#xff08;包括安装vscode和MinGW-W64安装及后续配置使用的详细过程&#xff0c;vscode用户代码片段的使用&#xff09;[考研专用]_QAQshift的博客-CSDN博客 问题如下:…

利用MS-SAMR协议修改用户密码

本文为Windows RPC利用系列文章的第一篇&#xff0c;主要介绍关于MS-SAMR的部分利用&#xff0c;在后续的文章中将继续介绍RPC在渗透测试中的应用 在渗透测试过程中&#xff0c;经常遇到拿到用户的NTLM哈希但无法解密出明文密码的情况。本文介绍并分析一种在仅知道域用户密码哈…

作为非计算机专业的学生觉得 C 语言远比其他语言更易上手正常吗

作为非计算机专业的学生&#xff0c;觉得 C 语言相对其他编程语言更易于上手是很正常的。C 语言的简洁语法和贴近底层的特性使其更容易理解和掌握。相比其他语言&#xff0c;C 语言不涉及复杂的高级特性和抽象概念&#xff0c;更直接地与计算机硬件交互&#xff0c;这种直观性对…

学习Linux,要把握哪些重点?

不知道有没有想学习Linux&#xff0c;但又把握不住学习重点&#xff0c;找不到合适的学习方法的小伙伴&#xff0c;反正我刚开始学习Linux时就像无头苍蝇似的“乱撞”&#xff0c;没有把握住学习重点&#xff0c;不知道怎么去学&#xff0c;差点要放弃了&#xff0c;还好在慢慢…

KEIL自带的Jlink怎么升级更换版本

问题背景 V4.20以上的keil安装包中都自带Jlink驱动包&#xff0c;即当你安装了KEIL后&#xff0c;Debug或Download就是用的安装KEIL时附带安装的Jlink版本。 那如果存在这种情况&#xff0c;你正在开发的芯片比较新&#xff0c;只有比较新的Jlink驱动软件才能支持&#xff0c…

有答案:10个网络工程师面试常见问题

目录 1、交换机转发数据包的原理&#xff1f; 2. 数据包如果经过二层交换机转发后&#xff0c;那这个数据包的源MAC会变化吗&#xff1f;如果经过三层交换机理由转发&#xff0c;那源MAC会变成什么呢&#xff1f; 3. 如何查看PC的ARP表&#xff0c;如何清除ARP表&#xff0c…

什么是训练数据?

算法从数据中学习。算法从得到的训练数据中找到关系&#xff0c;形成理解&#xff0c;做出决策&#xff0c;并评估信心。训练数据越好&#xff0c;模型的表现就越好。 实际上&#xff0c;与算法本身一样&#xff0c;训练数据的质量和数量与数据项目的成功有很大关系。 现在&…

WordPress数据库一次性批量删除所有文章和删除指定分类文章技巧

在自己建网站时,有时需要将一个网站搬家到另一个空间里,只想保留网站的模板样式,而不需要里面的文章内容。这时我们可以在后台将已发布的文章删除掉。但如果文章很多时,我们就需要使用下面数据库操作进行一次性删除所有文章的方法。 wordpress批量删除文章步骤 进入网站空…

探索规律:Python地图数据可视化艺术

文章目录 一 基础地图使用二 国内疫情可视化图表2.1 实现步骤2.2 完整代码2.3 运行结果 一 基础地图使用 使用 Pyecharts 构建地图可视化也是很简单的。Pyecharts 支持多种地图类型&#xff0c;包括普通地图、热力图、散点地图等。以下是一个构建简单地图的示例&#xff0c;以…

基于Python爬虫+词云图+情感分析对某东上完美日记的用户评论分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…