Python自动化测试实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功

news2024/9/20 9:35:55

在这里插入图片描述

Python接口项目实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功

  • 实现功能描述
  • 1.首先获取到接口
    • 谷歌浏览器中获取接口信息
    • fiddler里面抓取接口信息
  • 2.创建一个xlsx文档
  • 3.导入我们需要使用的包
  • 4.用xlrd读取xlsx文档中的内容
  • 5.通过unittest框架实现requests post接口登录
  • 6.结果

关于本篇的完整代码已经上传有需要的可以进行下载

Python接口项目实战篇(1)

实现功能描述

本篇需要实现的功能就是读取xlsx中的账户密码,来实现requests接口post登录网站的请求本篇使用的网站是cms系统
关于这个系统大家可以在网上搜寻一下。具体功能实现流程的如图所示
在这里插入图片描述

1.首先获取到接口

谷歌浏览器中获取接口信息

登录之后点击开发者工具
在这里插入图片描述
再点击网络,再点Fetch/XHR抓取接口
在这里插入图片描述
我们可以看到我们抓取的接口就是这个loginJump.do接口,有了这个接口之后我们可以对它进行登录的请求

在这里插入图片描述

fiddler里面抓取接口信息

登录之后点击跳转就会看到登录的信息
在这里插入图片描述
点击json查看返回的数据,这条数据是一个很好用来判断json登录是否成功的一种情况,我们可以用这个msg来判断是否登陆成功
在这里插入图片描述

2.创建一个xlsx文档

如果你没有在python中安装xlrd可以直接在pycharm中用python interpreter中点加号进行安装,注意一定要用xlrd1.2版本如果高于这个版本是无法连接xlsx文档
在这里插入图片描述
在这里插入图片描述
xlsx中的账号密码
在这里插入图片描述

3.导入我们需要使用的包

import os
import xlrd
import unittest,requests
from ddt import ddt,data,unpack

4.用xlrd读取xlsx文档中的内容

class read_xlsx:
    def __init__(self,file):
        self.read_file = xlrd.open_workbook(os.path.join('D:\pythonpj\pytest',file))#读取本地xlsx的地址包
    def get_xlsx(self,idex):
        sheet_idex = self.read_file.sheet_by_index(idex)
        key =sheet_idex.row_values(0)
        l=[]
        for i in range(1,sheet_idex.nrows):#统计页中行数
            values = sheet_idex.row_values(i)
            print(values)
            key_values=zip(key,values)#创建迭代器
            dt = dict(key_values)#对key和values值进行字典拼接
            l.append(dt)#添加值进去l中
        return l
# read_xlsx('ex.xlsx')
da_ta=read_xlsx('ex.xlsx').get_xlsx(0)

代码写完后已经可以成功获取到本地的xlsx文档内的账号密码以字典的形式输出
在这里插入图片描述

5.通过unittest框架实现requests post接口登录

@ddt #使用ddt
class logjump(unittest.TestCase):
    @data(*da_ta)
    @unpack
    def test_lojump(self,**tst):#需要用test命名才能用unittest的测试框架
        url='http://192.168.52.129:8080/cms/manage/loginJump.do'
        headers = {'Content-Type': 'application/x-www-form-urlencoded'}
        data = {'userAccount': tst['username'],
                'loginPwd': int(tst['pwd'])}  # 将键值对存放
        rps= requests.post(url=url,headers=headers,data=data)#传参
        print(rps.text)
        js =rps.json()#获取json值
        if js['msg']=='登录成功!':#设定断言
            print('恭喜你接口登录成功')
        else:
            print('接口登录不成功')
        assert js['msg'] == '登录成功!'  # 捕获断言
if __name__ == '__main__':
    unittest.main()

6.结果

可以看到unittest运行结果,第一个我们输入的账号密码正确,接口登录成功,第二我们输入的账号正确,密码错误,也就登录不成功,接口也登陆不成功,用例显示也是显示失败,因为第二个返回的json数据中msg值并不存在,相应的数据内容,所以就会报错。
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

【C++】继承详解

目录继承的概念及定义继承的概念继承的定义定义格式继承关系和访问限定符继承基类成员访问方式的变化基类和派生类对象的赋值转换继承中的作用域派生类的默认成员函数继承和友元继承与静态成员复杂的菱形继承及菱形的虚拟继承菱形继承的概念虚拟继承**虚拟继承的原理**&#xf…

IT6512可编程直流电源的工作原理

现在各种的电子设备不断的发展,它们对直流供电的电源也有了更高的要求,相对于电子设备来说,用单一的直流电源是没有办法达到供电的要求,所以需要不同的直流电源来给电子设备供电。可编程直流电源就是这一种。在生产测试中&#xf…

Pandas的apply, map, transform介绍和性能测试

apply函数是我们经常用到的一个Pandas操作。虽然这在较小的数据集上不是问题,但在处理大量数据时,由此引起的性能问题会变得更加明显。虽然apply的灵活性使其成为一个简单的选择,但本文介绍了其他Pandas函数作为潜在的替代方案。 在这篇文章…

软测(基础)· 软件测试的生命周期 · 如何描述一个 Bug · Bug 的级别 · Bug 的生命周期 · 争执 · Bug 评审

一、软件测试的生命周期软件测试的生命周期 & 软件开发的生命周期二、如何描述一个 Bug三、如何定义 Bug 的级别四、Bug 的生命周期五、发生争执了怎么办?Bug 评审一、软件测试的生命周期 软件测试的生命周期:需求分析 → 测试计划 → 测试设计、测…

《巫师3:狂猎》4.01版更新 PC端已上线

去年12月,《巫师3》免费升级次世代版,加入DLSS 3支持,RTX 40系显卡的用户能直接提升体验感,RTX 30系用户能通过DLSS 2获得更稳定的帧数。 目前。《巫师3:狂猎》4.01版已更新上线,在PC、PlayStation 和 Xbo…

【配电网规划】配电网N-1扩展规划研究(Matlab代码实现)

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

OJ万题详解––[NOIP2010 提高组] 机器翻译(C++详解)

题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换。对于每个英文单词,软件会先在内存中查找这个单词…

openstack cinder对接两个ceph后端配置

需求 需要做卷迁移的工作,从一个ceph集群迁移到另一个集群,因此需要配置两个ceph后端。由此开展后续工作,将配置过程及出现的问题做一记录。 另外两套ceph后端的访问用户都是cinder用户,网上找的资料均为两个用户,当为…

电子技术——BJT的物理结构

电子技术——BJT的物理结构 本节我们介绍另一种基本三端元件,BJT。 物理结构 下图展示了NPN型和PNP型BJT的物理结构简图。 从图中看出,BJT主要由三个区域组成,发射极(n类型),基极(p类型&#…

如何跑起一个Python Flask 项目

最近做项目迁移,从Google cloud 迁移到 AWS项目:Python Flask ORM是Alembic(我不是搞python的 这边看到这个了)python 是docker 跑起来的,一个docker-compose up就完事但我要进行数据库迁移测试,所以本地要跑起来我是mac先安装pyt…

财报解读:大裁员后Meta的元宇宙还有新故事吗?

美股科技巨头Facebook自更名为Meta Platforms后全面发力元宇宙,作为美国第一大社交平台以及全球流量池,转型后的Meta一度被市场寄予厚望,但同样受累于其元宇宙策略,年初至今,Meta的股价累计一度下跌近65%,也…

【超详细】一文看懂如何在PyCharm中集成Git

PyCharm环境集成Git 当我们在官网下载好Git后,按照要求进行安装,就可以通过快捷方式对本地仓库进行版本控制啦。但是这种方式处理整个工作环境还是比较麻烦的,接下来,我们将在PyCharm环境中配置Git。 基础配置 在设置中&#xf…

IPV6基本了解

参考:https://support.huawei.com/enterprise/zh/doc/EDOC1100116138#ZH-CN_TOPIC_0204809629, https://www.w3cschool.cn/ipv6/ipv6_address_types.html IPv6地址结构 和IPv4的10进制的表示方式不同,IPv6使用的是16进制的表示方式。 首先基…

FreeRTOS内存管理

内存管理是一个系统基本组成部分,FreeRTOS 中大量使用到了内存管理,比 如创建任务、信号量、队列等会自动从堆中申请内存。用户应用层代码也可以使 用 FreeRTOS 提供的内存管理函数来申请和释放内存。本章要实现的功能是:使 用 heap_4.c 方案…

剑指Offer 第21天 不用加减乘除做加法 二进制中1的个数

剑指 Offer 65. 不用加减乘除做加法 写一个函数&#xff0c;求两个整数之和&#xff0c;要求在函数体内不得使用 “”、“-”、“*”、“/” 四则运算符号。 int add(int a, int b) {while(b ! 0){unsigned int c (unsigned)(a & b)<<1;a a ^ b;b c;}return a;} 剑…

Linux安装Mysql5.5

链接&#xff1a;https://pan.baidu.com/s/146KA6VfB4NW6mWSRRwXsMg 提取码&#xff1a;ib17 rpm安装Mysql5.5 检测Mysql是否安装 强制卸载原来的Mysql 安装Mysql服务端 安装Mysql客户端 启动Mysql------> service mysql start 连接Mysql------->mysql -u ro…

时序数据库

时序数据库(TSDB) 接下来就到了&#xff0c;自己所适应行业的数据库了&#xff0c;时许数据库&#xff0c;这类对物联网传感器数据有着很好的支持。 https://blog.csdn.net/firewater23/article/details/125697248 时序数据是随时间不断产生的一系列数据&#xff0c;简单来说…

AD936x_增益控制AGC详解

增益控制概述 所有AGC模式都可用于TDD和FDD场景。AD936x具有手动增益控制选项&#xff0c;允许基带处理器控制接收机的增益。 上图为AD936x接收信号路径示意图&#xff0c;每个接收机都有自己的增益表&#xff0c;将增益控制字映射到每个可变增益块。无论使用AGC还是手动增益控…

ABAP IDOC 测试及使用相关事务代码

WE02:查看IDOC日志和清单 WE19:测试IDOC 可以进入debug模式 WE20:维护伙伴的一些属性&#xff0c;比如如果加了增强结构&#xff0c;在这里可以增加 WE30:查看并且修改IDOC types 结构 WE31:查看SEGMENT 内的字段和版本。也可以新建segment WE82: 新增输出类型和assignment…

中间件Canal之Canal简单使用

一. 简单介绍 Canal是Java开发的基于数据库增量日志解析&#xff0c;提供增量数据订阅&消费的中间件。目前&#xff0c;Canal主要支持了MySQL的Binlog解析&#xff0c;解析完成后才能利用Canal Client来处理获得的相关数据。 二. MySQL的Binlog 2.1. Binlog是什么&#…