【playwright】新一代自动化测试神器playwright+python系列课程53_playwright接口测试_发起接口请求

Playwright接口测试_发起接口请求

playwright是可以做接口测试的,这个是playwright的优势之一。要做接口自动化测试主要过程就是发起接口请求,接收接口响应,断言。本文我们就来看一下playwright如何发起接口请求。
Playwright下发起接口请求有三种方法,可以通过browser_context.request或page.request发起请求,也可以通过调用api_request.new_context()手动创建一个新的APIRequest上下文实例发起请求。前两种属于通过浏览器发起请求,需要驱动浏览器。如果不想驱动浏览器直接发起接口请求可以使用第三种。
另外每个Playwright浏览器上下文都有与其关联的APIRequestContext实例,该实例与浏览器上下文共享cookie存储,所以在接口与接口之间不需要手动管理cookie,这一点就跟requests库下的session类的作用一样。
接下来我们以修改密码接口为例来看一下三种接口请求的使用。如下图fiddler的抓包截图,密码修改成功后接口响应为success。
在这里插入图片描述

1、 browser_context.request发起请求

api_request_context = context.request # context对象创建接口请求实例

实践代码:

# '''
# author=测试-老姜   交流微信/QQ:349940839
# 欢迎添加微信或QQ,加入学习群共同学习交流。
# QQ交流群号:877498247
# 西安的朋友欢迎当面交流。
# '''

from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright=Playwright) -> None:
    browser = playwright.chromium.launch(headless=False,slow_mo=2000)
    context = browser.new_context(base_url= 'http://127.0.0.1:8080') #设置基本url
    page = context.new_page()
    api_request = context.request # context对象创建接口请求实例
    login_data = {
                    'browser':'Other',
                    'lang':'zh_CN',
                    'loginId':'sup',
                    'password':'s1234567'
                        }
    response = api_request.post(url='/oa/login.do',form=login_data) # 发起登录接口请求,成功登录
    # print(response.text())


    modify_password_data = {
        'oldpassword':'s1234567',
        'newpassword':'s12345678',
        'passwordagain':'s12345678'
            }
    # 发起密码修改接口请求,修改密码
    response = api_request.post(url='/oa/oaconf.do?actionmethod=modifyPassword',form=modify_password_data)
    print(response.text())


    page.wait_for_timeout(10000)
    # ---------------------
    context.close() # 上下文关闭时保存录屏
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

获取的响应与fiddler抓包一致
在这里插入图片描述

2、 page.request发起请求

api_request_context = page.request # page对象创建接口请求实例

实践代码:

# '''
# author=测试-老姜   交流微信/QQ:349940839
# 欢迎添加微信或QQ,加入学习群共同学习交流。
# QQ交流群号:877498247
# 西安的朋友欢迎当面交流。
# '''

from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright=Playwright) -> None:
    browser = playwright.chromium.launch(headless=False,slow_mo=2000)
    context = browser.new_context(base_url= 'http://127.0.0.1:8080') #设置基本url
    page = context.new_page()
    api_request = page.request # page对象创建接口请求实例
    login_data = {
                    'browser':'Other',
                    'lang':'zh_CN',
                    'loginId':'sup',
                    'password':'s1234567'
                        }
    response = api_request.post(url='/oa/login.do',form=login_data) # 调用登录接口,登录成功
    # print(response.text())


    modify_password_data = {
        'oldpassword':'s1234567',
        'newpassword':'s12345678',
        'passwordagain':'s12345678'
            }
    #调用修改密码接口,修改密码
    response = api_request.post(url='/oa/oaconf.do?actionmethod=modifyPassword',form=modify_password_data)
    print(response.text())


    page.wait_for_timeout(10000)
    # ---------------------
    context.close() # 上下文关闭时保存录屏
    browser.close()

with sync_playwright() as playwright:
    run(playwright)

获取的响应与fiddler抓包一致

在这里插入图片描述

3、 api_request.new_context()手动创建一个新的APIRequest上下文实例发起请求

context = playwright.request.new_context(base_url= 'http://xxxxx') #设置基本url

实践代码:

'''
# author=测试-老姜   交流微信/QQ:349940839
# 欢迎添加微信或QQ,加入学习群共同学习交流。
# QQ交流群号:877498247
# 西安的朋友欢迎当面交流。
'''

from playwright.sync_api import Playwright, sync_playwright, expect
def run(playwright=Playwright) -> None:
    
    context = playwright.request.new_context(base_url= 'http://127.0.0.1:8080') #设置基本url
    login_data = {
                    'browser':'Other',
                    'lang':'zh_CN',
                    'loginId':'sup',
                    'password':'s1234567'
                        }
    response = context.post(url='/oa/login.do',form=login_data)
    
    modify_password_data = {
        'oldpassword':'s1234567',
        'newpassword':'s12345678',
        'passwordagain':'s12345678'
            }

    response = context.post(url='/oa/oaconf.do?actionmethod=modifyPassword',form=modify_password_data)
    print(response.text())
    # ---------------------


with sync_playwright() as playwright:
    run(playwright)

获取的响应与fiddler抓包一致

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值