Pytest接口自动化测试进阶

在这里插入图片描述

  1. 背景
    随着Web应用的发展,越来越多的功能需要用户登录才能使用。而在接口测试中,往往需要模拟用户的登录状态来进行测试。一种常见的做法是通过Cookie来维持用户的登录状态。然而,由于Cookie的有效期限制以及网站的安全策略,如何在接口测试中有效地管理和维护登录状态成为了一项挑战。
  2. Pytest框架简介
    Pytest是一个功能强大、灵活且易于使用的Python测试框架,广泛应用于各种类型的测试,包括单元测试、集成测试和接口测试等。Pytest具有丰富的插件生态和简洁的语法,使得编写和维护测试代码变得更加高效和愉快。

3. Pytest接口自动化测试实现步骤

3.1 准备工作

首先,我们需要安装好Pytest库,并准备好接口自动化测试所需的测试代码和测试数据。

3.2 获取登录状态的Cookie

在进行京东网站的接口自动化测试之前,首先需要手动进行一次登录操作,并通过浏览器开发者工具或其他方式获取到登录成功后的Cookie信息。

3.3 在测试代码中加入Cookie

在编写接口自动化测试的代码时,将获取到的Cookie信息加入到请求头中,以模拟用户登录状态。

4.实现Cookie绕过的步骤

接下来,我们将详细介绍如何使用Python和Pytest实现Cookie绕过,并以爬取京东网站为例进行说明。

1. 获取登录态Cookie

首先,我们需要获取登录态的Cookie。我们可以使用Selenium模拟登录京东网站,并从浏览器中获取登录后的Cookie信息。

from selenium import webdriver
import random# 设置代理信息
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "16QMSOML"
proxyPass = "280651"# 随机生成UA
user_agents = ["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36",
]# 随机选择一个UA
user_agent = random.choice(user_agents)# 设置Chrome选项
options = webdriver.ChromeOptions()# 设置UA
options.add_argument(f'user-agent={user_agent}')# 设置代理
options.add_argument(f'--proxy-server=http://{proxyUser}:{proxyPass}@{proxyHost}:{proxyPort}')# 启动浏览器
driver = webdriver.Chrome(options=options)# 打开京东登录页面
driver.get('https://passport.jd.com/new/login.aspx')# 输入账号密码并登录
driver.find_element_by_id('loginname').send_keys('your_username')
driver.find_element_by_id('nloginpwd').send_keys('your_password')
driver.find_element_by_id('loginsubmit').click()# 获取登录后的Cookie
cookies = driver.get_cookies()# 关闭浏览器
driver.quit()# 将Cookie转换成字典形式
cookie_dict = {cookie['name']: cookie['value'] for cookie in cookies}

2. 使用Pytest进行测试

接下来,我们将使用Pytest编写测试用例,并在测试过程中使用已获取的登录态Cookie。

import pytest
import requests@pytest.fixture(scope='session')
def login_cookie():return cookie_dictdef test_crawl_jd_data(login_cookie):url = 'https://www.jd.com/'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}response = requests.get(url, headers=headers, cookies=login_cookie)assert response.status_code == 200assert '京东' in response.text

在上述代码中,我们定义了一个login_cookie的fixture,用于获取登录态Cookie。然后,我们编写了一个测试用例test_crawl_jd_data,在该测试用例中,我们发送了一个带有登录态Cookie的请求,并断言返回状态码为200,并且响应中包含了“京东”关键字。

3. 运行测试

最后,我们可以使用Pytest运行测试。

$ pytest test_jd_crawler.py

5. 注意事项

在使用Cookie绕过登录的过程中,需要注意以下几点:

  • Cookie的安全性:登录状态的Cookie包含了用户的身份信息,需要妥善保管,避免泄露给其他人。
  • Cookie的有效期:京东网站的Cookie可能会有有效期限制,需要定期更新或重新获取。
  • 动态变化的Cookie:京东网站的Cookie可能会根据用户登录状态、操作行为等动态变化,需要在测试中进行相应的处理。

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

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

相关文章

YOLOv5标签值含义根据标签将检测框色块替换(马赛克)

以一个检测人脸的图片为例: 检测后生成的标签txt如下, 此时,如何根据标签值将检测到的人脸同色块替换呢? 关键是获取检测框的左上角坐标和右下角坐标。 img Image.open(D:/PythonWokspace/JINX/datasets_transform/dataset/im…

YUDAO源码中的正序倒序表格ElmentUI的实现,与后端的配合?

前端展示和实现&#xff1a; 1. elmentUI表格的定义 2. JS请求参数改造 <!-- 列表 --><el-table v-loading"loading" :data"list" sort-change"handleSortChange"><el-table-column label"Expiry Date" prop"…

业主看完当场签约的神仙地产大屏,搞物业的你不来get同款么

各行各业都有可视化大屏的应用场景&#xff0c;不少同志曾私戳我&#xff1a;能不能给我XX行业的大屏示例哇&#xff0c;我展示的指标领导怎么都不满意哇&#xff01; 于是俺在行业顾问大哥那苦苦哀求&#xff0c;终于给大家带来这个地产行业的“营销战图大屏”方案&#xff0…

Linux函数学习 select

1、Linux select 函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); nfds 最大文件fd 1 readfds 监听可读文件集合fd writefds 监听可写文件集合fd exceptfd 监听异常文件集…

Linux服务器上搭建深度学习环境(安装anaconda、创建虚拟环境、安装pytorch)

Linux服务器的搭配 Linux服务器上安装anaconda创建虚拟环境linux上安装pytorchxshell连接服务器 Linux服务器上安装anaconda 链接 创建虚拟环境 参考教程&#xff1a;此处 linux上安装pytorch 链接 xshell连接服务器 链接

Android获取连接到手机热点上的设备信息

主题&#xff1a;在手机开启热点网络的情况下&#xff0c;想要获取是哪个设备已经连接上了当前开启的热点。 实现思路&#xff1a;Android通过读取 /proc/net/arp 文件可以得到连接当前热点的设备信息&#xff0c;包括Mac地址、IP地址等信息。 一. 方法逻辑&#xff1a; /*** …

Hadoop安装部署-NameNode高可用版

Hadoop分布式文件系统支持NameNode的高可用性&#xff0c;本文主要描述NameNode多节点高可用性的安装部署。 如上所示&#xff0c;Hadoop分布式文件系统部署了NameNode的Master主节点以及NameNode的Slave副节点&#xff0c;当Master主节点发生故障变得不可用时&#xff0c;ZooK…

【C语言】扫雷小游戏

文章目录 前言一、游戏玩法二、创建文件test.c文件menu()——打印菜单game()——调用功能函数&#xff0c;游戏的实现main()主函数 game.c文件初始化棋盘打印棋盘随机布置雷的位置统计周围雷的个数展开周围一片没有雷的区域计算已排查位置的个数排查雷(包括检测输赢): game.h文…

3d模型太大怎么把物体显示小---模大狮模型网

在3D建模软件中&#xff0c;您可以通过缩放操作来改变物体的大小以便于显示和编辑。以下是在常见的3D建模软件(例如Blender、Maya、3ds Max等)中缩小物体的方法&#xff1a; Blender中缩小物体&#xff1a; 选择物体&#xff1a;首先&#xff0c;选择您想要缩小的物体。您可以…

科研学习|科研软件——SPSS统计作图教程:多组折线图(≥3个变量)

一、问题与数据 研究者想研究45-65岁不同性别人群中静坐时长和血胆固醇水平的关系,分别招募50名男性和女性(gender)询问其每天静坐时长(time,分钟),并检测其血液中胆固醇水平(cholesterol, mmol/L),部分数据如图1。研究者该如何绘图展示这两者间的关系呢? 二、问题…

秋招复习笔记——八股文部分:操作系统

笔试得刷算法题&#xff0c;那面试就离不开八股文&#xff0c;所以特地对着小林coding的图解八股文系列记一下笔记。 这一篇笔记是图解系统的内容。 硬件结构 CPU执行程序 计算机基本结构为 5 个部分&#xff0c;分别是运算器、控制器、存储器、输入设备、输出设备&#xf…

进制转换(0123456789ABCDEF)

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {//将十进制数M转化为N进制数Scanner sc new Scanner(System.in);int m sc.nextInt();int n sc.nextInt();StringBuffer sb new StringBuffer();//1String s "0123456789…