【关于电商测试】接口测试笔记经验分享

接口测试
应用程序编程接口(API:Application Programming Interface):以HTTP协议形式提供,定义了输入、输出、功能描述的服务
即是规矩的制定
流程:
1、接口的功能测试(先要保证接口是正确的)
2、测试接口的数据(传递一些特殊的数据,保证接口没有问题)----比如淘宝上不能搜索到一些国家禁止售卖的东西
3、自动化测试脚本的编辑
4、接口的性能、压力测试

HTTP协议:
协议:计算机通信网络中两台电脑 之间进行通信所必须共同遵守的规则或规定
HTTP协议:超文本传输协议,是一种规定了浏览器和服务器之间通信的规则

URL(统一资源定位符)
概念:互联网上源源的地址、位置、每一个资源都有一个唯一的URL
格式:协议://主机地址/路径

GET请求
提交的数据显示在地址栏,不安全;提交的数据量有限制,不重要的的数据使用 GET
比如在淘宝搜索商品时,地址栏会出现商品名字


POST请求
隐式提交数据,更安全;没有数据量大小的限制;重要数据使用POST

数据传递的方式:
键值对:  ?xx=11&xx=22          问号前面是网址,后面是传的值     &前面是属性名,后面是属性值
Json数据:
{
"属性名1":"属性值1",
"属性名2":"属性值2",
"属性名3":"属性值3"
}

HTTP协议之常见响应状态码
1xx:指示信息---表示请求已接收,继续处理
2xx:成功 ---表示请求已被成功接收,理解、接受
3xx:重定向---要完成请求必须进行更一步操作
4xx: 客户端错误---请求有语法错误或请求无法实现
5xx:服务器端错误---服务器未能实现合法的请求

restful风格:
按照一定的规则写出的易读、易懂的api文档;目的是让前端、后端、测试三方在工作的时候有据可循,提升开发的测试的效率(非常制要求)
增删改查四大功能的语法风格:
1、查
方法:get
响应码:200+查询的数据

2、增
方法:post
响应码:201+新增的数据

3、改
方法:put
响应码:200或201 +修改后的数据

4、删
方法:delete
响应码:204    (后面不加东西)

接口测试“聚合数据”地址
https://www.juhe.cn/ucenter/account
13480.....47   maggic108222   


接口自动化测试
2种方式:jmeter和使用python写代码的方式(使用request库)

一、request库
1、安装和查看效果:
pip install requests

pip show requests

2、发送请求
常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS
使用requests发送网络请求只需要调用HTTP请求所对应的方法即可

2.1 GET请求
import requests;
response=requests.get()

请求方法的返回值response为Response对象,我们可以从这个对象中获取 所有我们想要的响应信息

实例:
"""
请求方法:GET
响应:
响应对象.url  #获取请求url
响应对象.status_code  #获取响应状态码
响应对象.text   #以文本形式显示响应内容
"""

import requests;url='http://baidu.com'#调用GETresponse=requests.get(url);#获取请求urlprint('请求url是:',response.url);#获取响应状态码print("状态码:",response.status_code);#获取响应信息 文本形式print("文本响应内容",response.text);




结果:
请求url是:http://baidu.com/
状态码:200
文本响应内容 <html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>

GET方法带参使用:
参数:params
方式1:params={"id":1001}
方式2:params={"id":"1001,1002"}
方式3:params={"id":1001,"kw":"北京"}


"""
请求方法:GET
案例:
1、http://www.baidu.com?id=1001
2、http://www.baidu.com?id=1001,1002
3、http://www.baidu.com?id=1001&kw=北京
参数:
params:字典或字符串
响应:
响应对象.url  #获取请求url
响应对象.status_code  #获取响应状态码
响应对象.text   #以文本形式显示响应内容
"""
import requests;
url='http://baidu.com'
#案例1  定义字典
# params={"id":1001}
#案例2  定义列表
# params={"id":"1001,1002"}
#运行的结果是:http://baidu.com/?id=1001%2C1002     %2c是逗号
#案例3  定义列表
params={"id":1001,"kw":"北京"}
#结果:请求url是:http://baidu.com/?id=1001&kw=%E5%8C%97%E4%BA%AC
#调用GET
#请求时带参  params
response=requests.get(url,params=params);
#获取请求url
print('请求url是:',response.url);
#获取响应状态码
print("状态码:",response.status_code);
#获取响应信息 文本形式
print("文本响应内容",response.text);


2.2 POST请求
作用:新增资源
应用:
1)导包
2)调用POST方法  requests.post()
参数:
1)url
2) json  新增请求报文
3) Headers: 请求信息头

案例:
"""
案例:新增学院
参数:
1、json:传入json字符串
2、headers:传入请求信息头内容
响应:
1、响应对象.json()


接口文档里的内容:
2.1 学院--新增
1)请求方法:POST
2)请求地址:http://v.juhe.cn/weather/index     #其实地址不是正确的,因为我本来就没有这个项目,这个是随手拿的天气预报的接口地址
3)请求信息头:Content-Type:application/json
4)调用传入的json串如下(可新增多条,之间用,号隔开)

{"data":[            {"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"            }    ]}"""#1、导包import requests;#调用post#请求urlurl='http://v.juhe.cn/weather/index'#请求headersheaders={"Content-Type": "application/json"}#请求jsondata = {        "data": [            {                "dep_id": "T01",                "dep_name": "Test学院",                "master_name": "Test-Master",                "slogan": "Here is Slogan"            }        ]}response=requests.post(url,json=data,headers=headers)#获取响应对象print(response.json())#获取响应状态码print(response.status_code);




运行结果:
如果是真实存在一个学院管理系统,那结果应该是长这样子的:

{"already_exist":{'count':0, 'results':[]}, 'create_success':{'count':1, 'results':[{"dep_id": "T01", "dep_name": "Test学院", "master_name": "Test-Master", "slogan": "Here is Slogan"}]}}201

但是因为我其实拿的是天气预报的接口地址,然后参数又是拿安全的参数,所以最终的结果是“错误的请求KEY",如下所示
{'error_code': 10001, 'resultcode': '101', 'reason': '错误的请求KEY', 'result': None}
200

扩展1:
data与json的区别
data:字典对象
json:json字符串
提示:
在python中字典对象和json字符串长得一样,但是后台格式不同,因此直接使用data会报错
转换:
导入json
使用json.dumps(字典对象)  方法来转换

实例:
"""
案例:新增学院
参数:
1、json:传入json字符串
2、headers:传入请求信息头内容
响应:
1、响应对象.json()


接口文档里的内容:
2.1 学院--新增
1)请求方法:POST
2)请求地址:http://127.0.0.1:8000/api/departments
3)请求信息头:Content-Type:application/json
4)调用传入的json串如下(可新增多条,之间用,号隔开)

{"data":[            {"dep_id":"T01","dep_name":"Test学院","master_name":"Test-Master","slogan":"Here is Slogan"            }    ]}"""


#1、导包

import json
import requests;#调用post#请求urlurl='http://v.juhe.cn/weather/index'#请求headersheaders={"Content-Type": "application/json"}#请求jsondata = {"data": [            {"dep_id": "T01","dep_name": "Test学院","master_name": "Test-Master","slogan": "Here is Slogan"            }        ]}# response=requests.post(url,json=data,headers=headers);#如果使用data,则会报Json parse error。直接这样子写是不行的,需要将字典对象转换成json字符串#response=requests.post(url,data=data,headers=headers);#将字黄对象转换为json字符串response=requests.post(url,data=json.dumps(data),headers=headers);#获取响应对象print(response.json())#获取响应状态码print(response.status_code);




扩展2:响应数据.text与响应数据.json的区别
长相基本一致,但r.json的类型是字典,可以通过键名获取值;r.text只是一个字符串
如果想要取值就要使用.json的方式

2.3 PUT方法   更新资源
应用:
1)导包 import requests
2) 调用put方法  requests.put()



实例

#1、导包import json
import requests;#调用post#请求url#url='http://v.juhe.cn/weather/index'#案例的地址原来是这样子的# url="http://127.0.0.1:8000/api/departments"#然后因为是要PUT(更新一条学院信息),需要在url后加加上具体的dep_idurl="http://127.0.0.1:8000/api/departments/T01"#请求headersheaders={"Content-Type": "application/json"}#请求jsondata = {"data": [            {"dep_id": "T01","dep_name": "Test学院2",    #假设需要改学院的名称,则在此作出改动"master_name": "Test-Master","slogan": "Here is Slogan"            }        ]}response=requests.put(url,data=json.dumps(data),headers=headers);#获取响应对象print(response.json())#获取响应状态码print(response.status_code);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值