当前位置: 首页 > news >正文

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

模拟接口

介绍

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 dataroute.fulfill(json=json)# Intercept the route to the fruit APIpage.route("*/**/api/v1/fruits", handle)# Go to the pagepage.goto("https://demo.playwright.dev/api-mocking")# Assert that the Strawberry fruit is visiblepage.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, expectdef 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)

http://www.lryc.cn/news/121968.html

相关文章:

  • Python爬虫——requests_get请求
  • 【EI复现】一种建筑集成光储系统规划运行综合优化方法(Matlab代码实现)
  • C++11 异步与通信之 std::async
  • 影视站用什么cms好?
  • HOT88-乘积最大子数组
  • 工博士与纷享销客达成战略合作,开启人工智能领域合作新篇章
  • 拆解与重构:慕云游首页组件化设计
  • 刷了3个月的华为OD算法题,刷出感觉了,如洁柔般丝滑,文末送《漫画算法2:小灰的算法进阶》
  • ip转换器哪个好用 ip地址切换器有哪些
  • 【python】爬取豆瓣电影Top250(附源码)
  • 35岁职业危机?不存在!体能断崖?不担心
  • C语言——指针进阶
  • heap pwn 入门大全 - 1:glibc heap机制与源码阅读(上)
  • 树莓派RP2040 用Arduino IDE安装和编译
  • 云安全攻防(八)之 Docker Remote API 未授权访问逃逸
  • 2023-08-13 LeetCode每日一题(合并两个有序数组)
  • nbcio-boot升级springboot、mybatis-plus和JSQLParser后的LocalDateTime日期json问题
  • 「C/C++」C/C++搭建程序框架
  • Android 内存泄漏
  • duckdb 源码分析之select执行流程
  • Android上的基于协程的存储框架
  • 虚拟现实与增强现实技术的商业应用
  • 每日后端面试5题 第六天
  • LeetCode150道面试经典题-- 两数之和(简单)
  • 转义字符\
  • 什么是DNS欺骗及如何进行DNS欺骗
  • Android核心开发之——OpenGL
  • 公共服务领域:西安新小区业主自立业主委员会年底分红83万以及103万事件区块链资金透明监管与投票解决方案的尝试
  • ID3 决策树
  • 简单线性回归:预测事物间简单关系的利器