最强自动化测试框架Playwright(17)- 模拟接口

2023-11-13

模拟接口

介绍

Web API 通常作为 HTTP 终结点实现。Playwright提供了API来模拟修改网络流量,包括HTTP和HTTPS。页面所做的任何请求,包括 XHR 和获取请求,都可以被跟踪、修改和模拟。使用Playwright,您还可以使用包含页面发出的多个网络请求的HAR文件进行模拟。

模拟 API 请求

以下代码将截获所有调用,并改为返回自定义响应。不会向 API 发出任何请求。测试将转到使用模拟路由的 URL,并断言页面上存在模拟数据。*/**/api/v1/fruits

 如下代码,handle会改变route的返回数据。

def test_mock_the_fruit_api(page: Page):
    def handle(route: Route):
        json = [{"name": "Strawberry", "id": 21}]
        # fulfill the route with the mock data
        route.fulfill(json=json)

    # Intercept the route to the fruit API
    page.route("*/**/api/v1/fruits", handle)

    # Go to the page
    page.goto("https://demo.playwright.dev/api-mocking")

    # Assert that the Strawberry fruit is visible
    page.get_by_text("Strawberry").to_be_visible()

模拟接口返回状态码为500 

def test_mock_the_fruit_api(page: Page):
    def handle(route: Route):
        # json = [{"name": "Strawberry", "id": 21}]
        # # fulfill the route with the mock data
        # route.fulfill(json=json)
        route.fulfill(status=500)

 修改接口响应

有时候需要模拟服务器返回500错误的状态,可以使用page.route拦截请求并修改

这就给我们测试前端的各种异常场景带来了很大的遍历,可以模拟出任何我们希望返回的接口数据

from playwright.sync_api import Playwright, sync_playwright, expect


def handle(route):
    # 状态码改成500 模拟服务器异常
    route.fulfill(status=500)

def run(playwright: Playwright) -> None:
    browser = playwright.chromium.launch(headless=False)
    context = browser.new_context()
    page = context.new_page()
    page.goto("http://127.0.0.0:8000/login.html")
    page.get_by_placeholder("请输入用户名").click()
    page.get_by_placeholder("请输入用户名").fill("yoyo")
    page.get_by_placeholder("请输入密码").click()
    page.get_by_placeholder("请输入密码").fill("aa123456")

    page.route("/api/login", handle)

    page.get_by_role("button", name="立即登录 >").click()
    page.pause()  # 断点
    # ---------------------
    context.close()
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最强自动化测试框架Playwright(17)- 模拟接口 的相关文章

  • MATLAB应用3——深度视觉 奥比中光Astra S显示RGB和深度信息

    首先从官网下载OpenNI驱动并安装 以及添加环境变量 MATLAB代码 参考 https blog csdn net limingmin2020 article details 109445787 首次使用需编译mxNI cpp文件 生成
  • SCI期刊画图常用颜色归纳总结

    我导师曾审稿300 他经常教导我们 论文中图片的质量是非常重要的 我审稿时主要看稿件的图表 PS 当然他说实验方法和结果很很很重要 还有其他的就不讨论了 因为本篇文章主要讲关于论文画图的事 我通常用PS画学术图 当然其他软件都可以 比如我师

随机推荐

  • 打印A4纸图片需要多少像素和分辨率?

    我们如果要设计杂志用的图片 A4大小的需要多少像素大小和分辨率呢 一般来说 给铜版纸使用的300dpi就够用了 太小打印出来不一定清晰 太大的话耗费内存和CPU处理起来十分慢 所以300dpi是一个很好的分界线 A4物理大小是21厘米 29
  • 【视频解读】动手学深度学习V2_02深度学习介绍

    1 AI地图 人工智能的地图 x轴是不同模式 由符号学到概率模型 到机器学习 Y轴是我想做的东西 最底下的是感知 我得了解这是什么东西 然后做推理 形成自己的知识 最后做规划 最底层的就是感知 就是我能够看到这个物体 比如这个屏幕等 做推理
  • 创建索引分区

    Oracle学习四 创建 索引分区 作者 mckobe23 http mckobe23 itpub net 发表于 2007 03 13 18 30 分类 Oracle 出处 http mckobe23 itpub net post 291
  • vue 中导出的方法,导出xls/zip/mp4等

    在我的项目中会用到导出功能 导出xls zip mp4文件的需求 所以直接整合一下导出功能的方法 首先引入方法 import downloadXls downloadZip from utils download 然后再运用 我这个地方是需
  • python 编码

    1 ASCII Unicode和UTF 8 计算机只能处理数字 如果要处理文本 就必须把文字转换为数字 因为计算机是美国人发明的 因此最早只有127个字母被编码到计算机里 包含大小写英文字母 数字和一些符号 这个编码表被称为ASCII编码
  • python连续小波分析CWT

    目录 0 引言 1 实例 1 1 结果图 1 2 代码 1 3 结果分析 2 cwt 使用介绍 3 参考链接 转自 python连续小波分析 0 引言 我们学过内积 内积的物理含义 两个图形的相似性 若两个图形完全正交 则内积为0 若两个图
  • gradle快速入门

    1 Gradle 入门 1 1 Gradle 简介 Gradle 是一款Google 推出的基于JVM 通用灵活的项目构建工具 支持Maven JCenter 多种第三方仓库 支持传递性依赖管理 废弃了繁杂的xml 文件 转而使用简洁的 支
  • 链路追踪Sleuth入门

    前言 在一个大型的分布式项目中存在各种各样的模块调用 每个模块负责不同的功能 组合成系统 在这种架构下的系统 一次请求往往会调用到许许多多的微服务 这样的跨度对于维护也是存在一定的问题 1 如何快速发现问题 2 如何判断故障影响范围 3 如
  • 前端面试考点---浏览器进程线程篇

    概念解析 进程 操作系统分配调度资源的最小单位 每个软件程序至少一个进程 线程 程序执行的最小单元 多进程 一个操作系统同时运行多个应用程序 一个浏览器同时打开多个tab页面 多线程 浏览器内核多线程协作完成渲染工作 浏览器进程划分 浏览器
  • Nginx nginx.conf配置文件详解

    目录 1 配置文件划分 第一部分 全局块 第二部分 events块 第三部分 http 2 详细配置 events use epoll http 负载方式 server 额外扩展配置 额外注意 1 配置文件划分 worker process
  • ros 样例代码和教程

    中国大学MOOC 机器人操作系统入门 课程代码示例 代码 https github com DroidAITech ROS Academy for Beginners 书 https legacy gitbook com book sych
  • 毕业设计别再做 XX 管理系统了!!!

    前几天写了一篇文章 你的毕业设计是 XX 管理系统吗 阅读量挺高的 很多读者还以为是推荐几个亮眼的 GitHub 项目 发现并不是 今天推荐几个项目 毕业设计可借鉴下面这几个 GitHub 项目 我不是简单的推荐项目 还会给出一些思路 基于
  • Qt 判断集合中的元素是否全部相同

    1 简述 判断元素是否相同 遍历跟第一个比就行 有不同直接返回 情况是有一个设备组 里边包含若干设备 设备全开 组开关显示开 设备全关 组开关显示关 设备状态不一致 禁用组开关 逻辑 判断组内状态是否相同 if 相同 取第一个设备状态即可
  • C语言 ANSI C 库常用处理字符串的函数

    1 char strcpy char restrict s1 const char restrict s2 该函数把s2指向的字符串 包括空字符 拷贝至s1指向的位置 返回值是s1 2 char strncpy char restrict
  • lua 之 math

    参考 Imathlib c Math Library Tutorial 常用接口 abs 返回指定值的绝对值 print math abs 10 10 print math abs 5 5 print math abs 1 02 1 02
  • 题目:L2-035 完全二叉树的层序遍历

    题目 题目详情 L2 035 完全二叉树的层序遍历 25 分 pintia cn 大意 一个二叉树 如果每一个层的结点数都达到最大值 则这个二叉树就是完美二叉树 对于深度为 D 的 有 N 个结点的二叉树 若其结点对应于相同深度完美二叉树的
  • 基于STM32F103的智能门锁系统

    基于STM32F103的智能门锁系统 直接说明实现了什么效果 1 指纹解锁 基于AS608 2 RFID解锁 基于RC522 3 密码解锁 基于LCD电容屏触摸控制 4 蓝牙解锁 基于HC 06 5 后台服务器管理开锁信息 基于ESP826
  • Docker 初学者指南——如何创建您的第一个 Docker 应用程序

    您是开发人员 想从 Docker 入手 这篇文章是为你而写的 在简要介绍什么是 Docker 以及为什么要使用它之后 您将能够使用 Docker 创建您的第一个应用程序 什么是Docker Docker是 Docker Inc 开发的一款免
  • 使用MXNet完成一个基于FCN的盲道实时语义分割

    使用MXNet完成一个基于FCN的盲道识别语义分割 一点说明 基本原理 测试集效果 数据标注 训练 基本设置 读入数据 网络构建 开始训练 测试 一点说明 前段时间根据gluon的教程动手学深度学习和同学项目实地拍摄的盲道图片完成了一个基于
  • 最强自动化测试框架Playwright(17)- 模拟接口

    模拟接口 介绍 Web API 通常作为 HTTP 终结点实现 Playwright提供了API来模拟和修改网络流量 包括HTTP和HTTPS 页面所做的任何请求 包括 XHR 和获取请求 都可以被跟踪 修改和模拟 使用Playwright