接口测试python练习

单元测试框架unittest

优点:

①批量执行用例

②自带断言功能

③借助插件生成测试报告 (测试报告插件有很多:HTMLTestRunner)Allure测试报告(长得很好看)

注意:

现在比较流行的还有pytest,pytest是基于unittest封装的。

unittest+requests测试用例:

import unittest
import requestsclass ApiTest(unittest.TestCase):session = requests.session()# 用例1:首页接口def test01_idnex(self):url = 'http://43.226.74.244/phpwind/index.php'res = self.session.get(url)# 断言self.assertIn('Powered',res.text)print('首页接口断言成功')# 用例2:验证用户登录接口def test02_check_uesrname(self):token = self.session.cookies['csrf_token']url = 'http://43.226.74.244/phpwind/index.php?m=u&c=login&a=checkname'headers = {'Accept': 'application/json, text/javascript, */*; q=0.01','X-Requested-With':'XMLHttpRequest'}data = {'username':'momo111','csrf_token':token}self.session.headers = headersres = self.session.post(url=url,data=data)#断言self.assertEqual(res.json()['state'],'success')print('用户登录接口断言成功')if __name__ == '__main__':unittest.main()

重定向接口断言笔记

1 重定向中存url,因为不是同一个对象,导致无法获取。

解决:不使用self.属性,而是使用类名.属性

2 获取的url是经过编码的,需要解码

解决:使用python中的解码函数unquote: from urllib.parse import unquote

代码示例:

描述:登录成功后自动重定向到该接口,请求目的是获取Cookie用户验证(winduser)

URL:登录接口的的referer内容

import unittest
import requests
from urllib.parse import unquoteclass ApiTest(unittest.TestCase):session = requests.session()redirect_url = None#用例3:登录def test03_login(self):url='xxx?m=u&c=login&a=dorun',headers={'Accept':'application/json, text/javascript, */*; q=0.01','X-Requested-With':'XMLHttpRequest'}self.session.headers = headerstoken = self.session.cookies['csrf_token']data = {'username':'momo111','password':'123456','csrf_token':token,'backurl':'xxx','invite':''}res = self.session.post(url=url,data=data)self.assertEqual(res.json()['state'],'success')print('test03_login断言成功')ApiTest.redirect_url = unquote(res.json()['referer'])def test04_redirect(self):url = ApiTest.redirect_urlres = self.session.get(url=url)# 断言self.assertIn('本站新帖',res.text)print('test04_redirect重定向断言成功')if __name__ == '__main__':unittest.main()

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

 全套资料获取方式:点击下方小卡片自行领取即可

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

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

相关文章

【Ansible 的脚本 --- playbook 剧本】

目录 一、playbook 剧本介绍二、示例1、运行playbook2、定义、引用变量 三、使用playbook部署lnmp集群 一、playbook 剧本介绍 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在…

【移动机器人运动规划】02 —— 基于采样的规划算法

文章目录 前言相关代码整理:相关文章: 基本概念概率路线图(Probabilistic Road Map)基本流程预处理阶段查询阶段 优缺点(pros&cons)一些改进算法Lazy collision-checking Rapidly-exploring Random Tree算法伪代码…

2023华数杯数学建模C题母亲对婴儿影响论文完整讲解

大家好呀,从昨天发布赛题一直到现在,总算完成了华数杯数学建模C题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。 C题论文共72页,一些修改说…

iOS——Block two

Block 的实质究竟是什么呢?类型?变量?还是什么黑科技? Blocks 是 带有局部变量的匿名函数 Blocks 由 OC 转 C 源码方法 在项目中添加 blocks.m 文件,并写好 block 的相关代码。打开「终端」,执行 cd XX…

LNMP安装

目录 1、LNMP简述: 1.1、概述 1.2、LNMP是一个缩写词,及每个字母的含义 1.3、编译安装与yum安装差异 1.4、编译安装的优点 2、通过LNMP创建论坛 2.1、 安装nginx服务 2.1.1、关闭防火墙 2.1.2、创建运行用户 2.1.3、 编译安装 2.1.4、 优化路…

前端JS实用操作符,一些骚操作✨

目录 0、!! 双重逻辑非操作符 📚 1、?? 操作符 空值合并/空判断 ✅ 2、?. 可选链运算符🔍 3、?? 操作符 逻辑空值赋值运算符 💚 4、三元运算符 📗 5、~~ 操作符 双位运算符 🔨 6、&&与 ||或 短…

【Autolayout自动布局介绍 Objective-C语言】

一、好,我们开始介绍Autolayout 1.什么事Autolayout 好,那么,接下来,我们介绍一下这个Autolayout Autolayout,就是“自动布局” 那么,自动布局,它就是专门用来做UI界面的 那么,UI界面,我们为了适应不同屏幕,要进行自动布局, 所以要使用Autolayout 这个Autolayou…

Open3D (C++) 计算矩阵的广义逆

目录 一、算法原理1、广义逆2、计算过程二、代码实现三、结果展示四、参考链接本文由CSDN点云侠原创,原文链接。爬虫网站自重,把自己当个人,爬些不完整的误导别人有意思吗???? 一、算法原理 1、广义逆 非方阵不存在逆,但是存在广义逆(伪逆)。对于一个矩阵

数据仓库设计理论

数据仓库设计理论 一、数据仓库基本概念 1.1、数据仓库介绍 数据仓库是一个用于集成、存储和分析大量结构化和非结构化数据的中心化数据存储系统。它旨在支持企业的决策制定和业务分析活动。 1.2、基本特征 主题导向:数据仓库围绕特定的主题或业务领域进行建模…

【网络基础实战之路】基于MGRE多点协议的实战详解

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 PS:本要求基于…

记录一次Linux环境下遇到“段错误核心已转储”然后利用core文件解决问题的过程

参考Linux 下Coredump分析与配置 在做项目的时候,很容易遇到“段错误(核心已转储)”的问题。如果是语法错误还可以很快排查出来问题,但是碰到coredump就没办法直接找到问题,可以通过设置core文件来查找问题&#xff0…

About Multiple regression

ps:this article is not very strict,just some ml and mathematic basic knowledge.My english is poor too.So If this passage make you confuse and uncomfortable.Please give me a feedback in the comment :-D Prior to this(在此之前), we learned the concept of sin…

数据结构:单链表的实现(C语言)

个人主页 : 水月梦镜花 个人专栏 : 《C语言》 《数据结构》 文章目录 前言一、单链表实现思路和图解1.节点的定义(SListNode)2.申请一个节点(BuySListNode)3.单链表打印(SListPrint)4.单链表尾插(SListPushBack)5.单链表的头插(SListPushFront)6.单链表的…

vue2-v-show和v-if有什么区别,使用场景分别是什么?

1、v-show和v-if的共同点 在vue中,v-if和v-show的作用效果是相同的(不含v-else),都能控制元素在页面是否显示,在用法上也相同。 当表达式为true的时候,都会占据页面的位置 当表达式为false的时候&#xff…

css3 hover border 流动效果

/* Hover 边线流动 */.hoverDrawLine {border: 0 !important;position: relative;border-radius: 5px;--border-color: #60daaa; } .hoverDrawLine::before, .hoverDrawLine::after {box-sizing: border-box;content: ;position: absolute;border: 2px solid transparent;borde…

TCP的三次握手和四次挥手······详解

1、三次握手 三次握手是建立连接的过程 如图大致为三次握手的流程图: 当客户端对服务端发起连接时,会先发一个包连接请求数据,去询问能否建立连接,该数据包称为 “SYN”包 然后,如果对方同意连接,那么…

九耶|阁瑞钛伦特 Java中,锁的实现方式

在Java中,锁的实现方式有以下几种: 1. Synchronized关键字:使用synchronized关键字可以创建一个互斥锁,它可以保证同一时刻只有一个线程可以进入被synchronized关键字修饰的代码块或方法。 2. ReentrantLock类:Reentr…

二叉树进阶版(C)

文章目录 1.树1.1概念1.2相关定义1.3 表示(左孩子右兄弟) 2.二叉树2.1概念2.2特殊的二叉树1. 满二叉树:2. 完全二叉树: 2.3二叉树的性质2.4练习 3.二叉树的存储结构1. 顺序存储2. 链式存储 4.完全二叉树的代码实现4.1堆的介绍1.堆…

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台3

吃完快餐粥,除了粥的味道不错之外,我对个快餐盒的圆盖子产生了兴趣,能否做个极低成本的简易机器人呢?也许只需要二十元左右 知识点:轮子(wheel) 中国词语。是用不同材料制成的圆形滚动物体。简…

Qt展示动态波形

Qt展示动态波形 需求描述成品展示实现难点Qt多线程 需求描述 接入串口,配置串口顺序进行接收数据;数据分成两个串口分别传入,使用多线程并发接入;时域数据有两个通道(I,Q),分别以实…