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

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

playwright是可以做接口测试的,这个是playwright的优势之一。要做接口自动化测试主要过程就是发起接口请求,接收接口响应,断言。本文我们就来看一下playwright如何发起接口请求。

Playwright下发起接口请求有三种方法,可以通过browser_context.request或page.request发起请求,也可以通过调用api_request.new_context()手动创建一个新的APIRequest上下文实例发起请求。前两种属于通过浏览器发起请求,需要驱动浏览器。如果不想驱动浏览器直接发起接口请求可以使用第三种。

另外每个Playwright浏览器上下文都有与其关联的APIRequestContext实例,该实例与浏览器上下文共享cookie存储,所以在接口与接口之间不需要手动管理cookie,这一点就跟requests库下的session类的作用一样。

接下来我们以修改密码接口为例来看一下三种接口请求的使用。如下图fiddler的抓包截图,密码修改成功后接口响应为success。

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抓包一致

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抓包一致

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抓包一致

posted @ 2024-03-21 11:08  测试_老姜  阅读(27)  评论(0)    收藏  举报