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