python接口自动化01

emmmmm,自从设置为仅粉丝可见后,想搞些骚操作

一、定义

1.1接口

在计算机中,接口是计算机系统中两个独立的部件进行信息交换的共享边界。

是指外部系统与系统之间以及内部各子系统之间的交互点。

1.2接口(API)测试

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。 

接口测试也是属于功能测试,测试流程依旧是:1.测试接口文档(需求文档) 2.根据接口文档编写测试用例(用例编写完全可以按照以往规则来编写,例如等价类划分,边界值等设计方法) 3. 执行测试,查看不同的参数请求,接口的返回的数据是否达到预期。

此处贴一个接口功能测试用例模板 

二、常见的接口类型

常见web接口:一类是http协议的接口,另一类是web service接口(如soup、rmi、rpc协议)。

常见的http请求方式包括:get(查)、post(增),除此之外还有put(改)、delete(删)等。日常工作中见到的最多的是get和post两种。

1、GET:GET可以说是最常见的了,它本质就是发送一个请求来取得服务器上的某一资源。

2、POST:向服务器提交数据。这个方法用途广泛,几乎目前所有的提交操作都是靠这个完成。

3、PUT:这个方法比较少见。HTML表单也不支持这个。本质上来讲, PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。

4、DELETE:删除某一个资源,基本上这个也很少见。

2.1GET接口

2.1.1格式

请求数参数写在网址后面,用"?"连接,多个参数之间用"&"连接。如:https://api.douban.com/v2/book/search?q='',这是一个豆瓣查询图书信息的开发api,q='',单引号里就是查询的参数。

2.1.2场景

get型接口用于获取信息,多用于查询数据,如列表查询功能,点击查询按钮就调用一个get接口,然后把信息返回出来。

2.2POST接口

2.2.1场景

向指定资源位置提交数据(如提交表单、上传文件)来进行请求,post请求可能会导致新资源的建立。如注册、上传、发帖等功能,如用户在豆瓣网站对某本书进行收藏、写笔记、发表评论。

2.3PUT接口

2.3.1场景

put请求用于向指定资源位置上传最新内容场景:如用户在豆瓣网站修改对某本书的收藏、修改某篇笔记或修改评论

2.4DELETE接口

2.4.1场景

请求服务器删除请求里url所标识的资源。如用户在豆瓣网站取消对某本书的收藏、删除某篇笔记或删除评论

三、接口测试工具

Fiddler

抓http包的工具、也支持接口测试

Postman

非常流行的API调试工具

Python代码做接口测试

Python+requests

LoadRunner

接口自动化和接口压力测试。

JMeter

做接口性能测试

SoupUI 

通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试

#除了上述的之外,还可以用java做接口测试,但博主对java了解得不多,所以不多加阐述,以免翻车。

之后会对上述各个工具做详细的描写。

四、简单了解requests库

Requests是一个Python第三方库,是唯一的一个非转基因的 Python HTTP 库(中文官网自己讲的骚话)

官网代码:

 Basic GET usage:
    
       >>> import requests
       >>> r = requests.get('https://www.python.org')
       >>> r.status_code
       200
       >>> b'Python is a programming language' in r.content
       True
    
    ... or POST:
    
       >>> payload = dict(key1='value1', key2='value2')
       >>> r = requests.post('https://httpbin.org/post', data=payload)
       >>> print(r.text)

4.1安装requests

1.命令安装:pip install requests
2.pycharm直接搜索requests库安装

4.2使用requests(get请求)

4.2.1重要解释

1、将安装好的requests模块导入后,通过GET访问一个URL地址的网页页面,如:https://www/douban.com

2、这里的 r 也就是 response,请求后的返回值,可以调用 response 里的 status_code 方法查看状态码

3、状态码 200 只能说明这个接口访问的服务器地址是对的,并不能说明功能 OK,一般要查看响应的内容,r.text 是返回文本信息。

4.2.2get请求(无参)

#中文官网的代码,可参考:
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
u'{"type":"User"...'
>>> r.json()
{u'private_gists': 419, u'total_private_repos': 77, ...}
import requests
#导入requests库
r=requests.get("https://www.baidu.com")
#请求百度首页
print(r.status_code)
#打印状态码
print(r.text)
打印文本

4.2.3get请求(有参)

#多说一句有,Python中可以用单引号(' ')或者双引号(" ")表示字符串,为什么要说废话,因为我不记得了

# get请求
url = "http://192.144.148.91:2333/get_title_img?num=3" # 接口信息
res = requests.get(url)         # 发送请求并且获取返回值,返回值给res
print(res.text)                 # 打印返回值的信息

4.3使用requests(post请求)

4.3.1基本形式

import requests
url="https://httpbin.org/post"
payload={"username":"1918991791@qq.com","password":"password"}#以json的格式传入
r=requests.post(url=url,data=payload)
print(r.text)

4.3.2发送post请求的接口(json参数)

1、post 的 body 是 json 类型,也可以用 json 参数传入。

2、先导入 json 模块,用 dumps 方法转化成 json 格式。

3、返回结果,传到 data 里

import requests
import json
url="https://httpbin.org/post"
payload={"username":"1918991791@qq.com","password":"password"}#以字典的形式传入
data_json=json.dumps(payload)#转换成json格式,其实这句不用也可以,直接用json=body也可以,如下
r=requests.post(url=url,json=data_json)
print(r.text)

url="https://httpbin.org/post"
payload={"username":"1918991791@qq.com","password":"password"}#以字典的形式传入
r=requests.post(url=url,json=payload)
print(r.text)

4.3.3如何处理token值和请求头headers

from Business.url import url
import requests, json


def login_token(username, password):
    '''获取登录后的token'''

    headers = {"Content-Type": "application/json;charset=UTF-8"}

    request_param = {
        "username": username,
        "password": password
    }
    response = requests.post(url, data=json.dumps(request_param), headers=headers)
    # 返回JSON中data数据的token
    return response.json()["data"]["token"]
# # 评论文章
u1 = "http://192.144.148.91:2333/comment/new"
d1 = {"ctype": 1, "comment": "奥克兰技术的flak即使对方", "fid": "3796"}
h1 = {"token": token}
res = requests.post(url=u1, json=d1, headers=h1) # headers:请求头
print(res.text)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值