接口自动化

魂~ / 2023-05-12 / 原文

一、接口测试和接口自动化测试场景

目前主流的接口测试工具:( 中小型公司、项目 )

Postman+Newman+Git+Jenkins

Jmeter+Ant+Git+Jenkins

目前主流的接口自动化测试技术:( 大型的公司、项目)

python+requests+pytest+allure+jenkins

二、requests库简介

requests是用来发送http请求以及接收http响应的python第三方库,主要用于接口自动化测试

#安装:

pip install requests

三、requests库常用的方法

1.requests.get()

使用方式:get(url, params=None, **kwargs)  #url是接口地址,params用于传参

2.requests.post()

使用方式:post(url, data=None, json=None, **kwargs)  #url是接口地址,data用于传参,json也用于传参

data和json传参选哪个:主要是通过请求头Content-Type来区分

Content-Type:作用是服务器要求传入的报文的内容类型

四大请求:请求方式,请求路径,请求头,请求正文

在postman中四种传参方式对应的Content-Type的值如下:

form-data对应的Content-Type : multipart/form-data; boundary=<calculated when request is sent>  #文件上传
x-www-from-urlencoded对应的Content-Type : application/x-www-form-urlencoded  #表单提交
raw分为以下几种:
  text对应的Content-Type : text./plain
  javscript对应的Content-Type : application/javascript
  json对应的Content-Type : application/json
  html对应的Content-Type : text/html
  xml对应的Content-Type : application/xml
binary对应的Content-Type : application/binary
Postman官网下载地址
Postman官网下载地址 https://www.postman.com/downloads/:
    Postman for MAC https://dl.pstmn.io/download/latest/osx
    Postman for windows 64 https://dl.pstmn.io/download/latest/win64
    Postman for windows X86 https://dl.pstmn.io/download/latest/win32
    Postman for linux https://dl.pstmn.io/download/latest/linux64

在requests中data和json传参跟Content-Type的关系如下:

1.服务器要求Content-Type:application/x-www-form-urlencoded,则需要,data传参:报文是dict类型
  服务器要求Content-Type:text./plain,则需要,data传参:报文是str类型
2.服务器要求Content-Type:application/json,则需要,json传参:报文可以是dict类型

#可以用看接口文档或者用Fidder抓包看Content-Type是什么决定用data还是json

所以:

data:可以传纯键值对的dict(非嵌套的dict),也可以传str格式(如果是嵌套字典那么就需要使用ison.dumps()把嵌套字典转化成ison字符串传参)

json:可以传任何形式的dict( 包括嵌的dict)

#json.loads()  把json字符串转化成dict格式

#json.dumps()  把dict格式转化成ison字符串

3.requests.put()

 

4.requests.delete()

 

5.requests.request()

可以发送所有类型的请求:get,post,put,delete

不管是get还是post还是put和delete都是调用的requests.request方法。而requests.reques方法调的是session.request方法。

method                  请求方式

url                           请求路径

params=None        get方式传参

data=None             post方式传参

json=None             post方式传参

headers=None       请求头

cookies=None        请求cookie

files=None              文件上传







四、requests模块返回的response对象详解

res.json()  获得返回的字典格式的数据

res.text  获得返回的字符串格式的数据

res.content  获得返回的bytes(字节)类型的数据

res.status_code  返回状态码

res.reason  返回状态信息

res.cookies  返回cookie信息

res.headers  返回响应头

res.request.xxx  返回请求的数据,如:请求头,请求参数等




五、请求必须带请求头的接口,以及需要cookie鉴权和session鉴权的接口

90%以上的基于web的接口都有cookie鉴权。

两种解决方式
1使用ookie关联

2使用session关联 一般用这种方式