54新一代自动化测试神器playwright+python系列课程_playwright接口测试_发起接口请求_get_post_fetch应用详解

playwright_发起接口请求_get、post、fetch应用详解

接口的请求类型有get、post、head、delete、put等多种请求类型,每种请求类型的接口在发起接口请求时是有区别的,目前系统中主要是get和post两种接口类型,本文主要介绍这两种接口发起请求时的具体应用。

前面一篇文章已经介绍了playwright发起接口请求的过程,本文将主要介绍发起接口请求时的参数如何应用。

post:

使用方法:

context =playwright.request.new_context(base_url='http://xxxxx')

context.post()

在context.post()发起post接口的请求时,主要用到url、headers、data、form、multipart、params、timeout这些参数。

url:接口地址,如果设置了base_url,只需要传入相对地址即可。

示例:

context.post(url='/xxxxx/xxx/xx')

headers:用于设置请求头,为字典格式。

示例:

Api_headers={
"Accept": "application/vnd.github.v3+json",
# Add GitHub personal access token.
"Authorization": f"token {API_TOKEN}",
}

Context.post(headers= Api_headers)

data、form、multipart:

这三个参数都是设置接口的入参的,只是接口的数据格式不同需要选择不同的参数。在接口的请求头中有个Content-Type字段,它的值就表示了接口的数据格式。

不同的数据格式,需要选择不同的参数。

当Content-Type的值为application/json,说明接口的数据格式为json格式,这个时候需要使用data。

示例:

data = {
"title": "Book Title",
"body": "John Doe",
}
context.post("https://xxx.com/api/xxx", data=data)

当Content-Type的值为application/x-www-form-urlencoded,说明接口的数据格式为form格式,这个时候需要使用form。

示例:

formData = {
"title": "Book Title",
"body": "John Doe",
}
context.post("https://xxx.com/api/xxx", form=formData)

当Content-Type的值为multipart/form-data,说明接口传递的数据为表单数据且有多部分构成,这个时候需要使用multipart。

示例:

Api_multipart={
"fileField": {
"name": "f.js",
"mimeType": "text/javascript",
"buffer": b"console.log(2022);",
},
}
context.post("https://xxx.com/api/xxx", multipart = Api_multipart)

params:当入参在url后面时使用,但是post接口应用较少。

timeout :设置超时时间,单位毫秒。

get:

使用方法:

context =playwright.request.new_context(base_url='http://xxxxx')

context.get()

在context.get()发起get接口的请求时,get方法和post方法的参数是一样的,但是主要用到的参数是url、headers、params这几个参数。

url:接口地址,如果设置了base_url,只需要传入相对地址即可。

示例:

context.get(url='/xxxxx/xxx/xx')

headers:用于设置请求头,为字典格式。

示例:

Api_headers={
"Accept": "application/vnd.github.v3+json",
# Add GitHub personal access token.
"Authorization": f"token {API_TOKEN}",
}

context.get(headers= Api_headers)

params:用于设置接口的入参。

示例:

query_params = {
"isbn": "1234",
"page": "23"
}
context.get("https://xxx.com/api/xxx", params=query_params)

fetch:

fetch()方法相较于post和get的应用来说,fetch()方法不针对某一种接口类型,在fetch方法中有个method参数,这个参数可以指定接口类型,另外,fetch()方法中指定接口地址也不是传参给url,而是url_or_request,其他参数用法与get和post一致。

示例:

    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.fetch(url_or_request='/oa/login.do',method='post',form=login_data)

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