python playwright mock使用

2513 篇文章 2 订阅
2350 篇文章 14 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

模拟登录成功

场景描述:在登录测试中,无需真的调用服务器API,而是直接模拟服务器成功响应,返回一个假的JWT token。

def login_success_mock(route):
    if "/login" in route.request().url and route.request().method == 'POST':
        route.fulfill(
            status=200,
            headers={"Content-Type": "application/json"},
            body=json.dumps({"token": "mocked_token"})
        )
    else:
        route.continue_()
with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_page()
    context.route("**/api/login*", login_success_mock)
    # 登录操作...
    # ...

动态模拟API响应

场景描述:根据请求参数动态生成不同的响应数据,模拟多场景下的API交互。

def dynamic_response(route):
    params = parse_qs(urlparse(route.request().url).query)
    if params.get('type') == ['success']:
        route.fulfill(status=200, body=json.dumps({"status": "success", "data": "mocked_data"}))
    else:
        route.fulfill(status=400, body=json.dumps({"status": "error", "message": "Invalid request"}))
context.route("**/api/dynamic*", dynamic_response)

模拟网络延迟

场景描述:为了测试应用在慢网络下的表现,模拟网络延迟。

import time
def latency(route):
    time.sleep(3)  # 模拟3秒延迟
    route.fulfill(status=200, body='{"response": "delayed"}')
context.route("**/api/slow*", latency)

模拟分页数据

场景描述:在分页加载测试中,模拟不同页码的数据返回。

def paginated_response(route):
    page_number = int(route.request().url.split('/')[-1])
    mock_data = [{"id": i} for i in range(page_number*10, page_number*10 + 10)]
    route.fulfill(status=200, body=json.dumps({"page": page_number, "items": mock_data}))
context.route("**/api/items/page/*", paginated_response)

模拟HTTP错误

场景描述:测试应用在遇到500 Internal Server Error等HTTP错误时的处理能力。

def http_error(route):
    route.fulfill(status=500, body='{"message": "Internal Server Error"}')
context.route("**/api/error*", http_error)

模拟重定向

场景描述:模拟从一个URL重定向至另一个URL的过程。

def redirect(route):
    route.fulfill(status=302, headers={"Location": "http://example.com/mock-redirect-target"})
context.route("**/api/redirect*", redirect)

模拟授权失败

场景描述:模拟鉴权失败,返回401 Unauthorized响应。

def auth_failure(route):
    route.fulfill(status=401, body=json.dumps({"message": "Unauthorized"}))
context.route("**/api/auth*", auth_failure)

模拟特定HTTP头部

场景描述:在响应中添加或修改特定的HTTP头部。

def custom_headers(route):
    route.fulfill(status=200, headers={"X-Mock-Header": "mocked_value"}, body='{}')
context.route("**/api/headers*", custom_headers)

模拟资源未找到

场景描述:模拟404 Not Found错误。

def not_found(route):
    route.fulfill(status=404, body='{"message": "Resource not found"}')
context.route("**/api/nonexistent*", not_found)

根据请求体内容决定模拟响应

场景描述:根据POST请求体中的内容动态决定模拟的响应。

def conditionally_mocked_response(route):
    request_body = json.loads((await route.request().post_data_buffer()).decode())
    if request_body["key"] == "mock":
        route.fulfill(status=200, body=json.dumps({"mocked": True}))
    else:
        route.continue_()
context.route("**/api/conditional*", conditionally_mocked_response)

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 14
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值