网站建设资讯

NEWS

网站建设资讯

python+requests如何实现接口自动化

这篇文章给大家分享的是有关python+requests如何实现接口自动化的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

我们提供的服务有:网站设计制作、成都网站建设、微信公众号开发、网站优化、网站认证、华蓥ssl等。为上1000家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的华蓥网站制作公司

利用python和第三方库requests进行接口自动化测试(python+requests)

第三方库requests简单介绍

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。更重要的一点是它支持 Python3 。

大概步骤

Request是第三方库,需要手动安装:CMD安装即可----命令:pip install requests

在pycharm先导入requests第三方库,代码—import requests

发送请求—http.get请求:requests.get(‘https://api.github.com/events’)

发送请求—http.post请求:requests.post(‘http://httpbin.org/post’, data = {‘key’:‘value’})

构建URL参数等

结合Python进行返回参数进行验证

运行即可(请求失败可抓包查看发送参数是否有误)

详细介绍

以下主要介绍两种常用http请求:get和post,以及delete

下图为本次编写代码测试的用例

具体代码:

第一步:安装完后直接导入requests使用

#导入requests

import requests

第二步:利用Python+requests编写代码构建请求

#登录接口--post请求

这里需要注意,除了返回接口内容,还需要返回cookies,因为后面的操作需要用到登录身份标识

def Login(user,passw):

payload = {

'username': test,

'password': 123456

}

# data参数 就是构造消息体的

response = requests.post("http://localhost/XXXX",

data=payload)

# 获取结果,返回给调用者

retDict = response.json()

# 在控制台打印出结果

print(retDict)

#返回结果,调用时需要用到

return retDict, response.cookies

#添加课程接口--post请求

这里需要注意,请求参数需要加上cookies,因为后面的操作需要用到登录身份标识

def add_course(action,name,desc,dis,sessionid):

re={'action':action,

'data':'''

{

"name": "%s",

"desc": "%s",

"display_idx": "%s"

}

'''% (name,desc,dis)

}

rs=requests.post("http://localhost/XXXX",data=re,cookies={'sessionid': sessionid})

re=rs.json()

print(re)

return re

#列出课程接口--get请求

def list_course(sessionid):

parm={

'action' :'list_course',

'pagenum':1,

'pagesize':20

}

# he = {"Content-Type": "application/json"}

rs=requests.get("http://localhost/XXXX",params=parm,cookies={'sessionid': sessionid})

liechu=rs.json()

print(liechu)

return liechu

#删除课程接口--delete请求

def delete_course(courseid,sessionid):

payload = {

'action': 'delete_course',

'id': f'{courseid}'

}

response = requests.delete("http://localhost/XXXX/",

data=payload,

cookies={'sessionid': sessionid})

r = response.json()

pprint.pprint(r)

return r无锡妇科医院 http://www.bhnfk.com

第三步:利用Python对requests返回的参数进行验证

#因为这块代码是新建了另一个Python文件编写。所以这里需要先导入上面的Python文件才可以调用里面的函数

from jiakouzudonghua import aba

#导入随机数函数

import random

# 利用写好的登录接口进行登录

# loginRet保存登录接口返回是否登录成功的参数,cookies保存登录成功返回的cookie

loginRet,cookies = aba.Login('auto','sdfsdfsdf')

#使用if判断是否登录成功,可直接使用assert验证

if loginRet["retcode"] == 0:

print('登录成功')

else:

print('登录失败')

# 记录下sessionid

sessionid =cookies['sessionid']

#这里课程使用了随机数,最大程度确保每次运行不会创建到同名课程

classname=('课程'+str(random.randint(0,99999999999)))

# 第一次先列出课程,为后面比较做准备

coureListBefore = list_course(sessionid)['retlist']

# 添加一门课程,且使用assert进行验证,对则不会反悔信息,错则返回错误信息

retDict = add_course('classname','php语言','2',sessionid)

assert retDict['retcode'] == 0

#也可用if进行验证

# if retDict['retcode'] == 0:

# print('添加课程成功')

# else:

# raise Exception('添加课程失败')

# 第二次再列出课程

coureListAfter = list_course(sessionid)['retlist']

#使用len计算添加课程前和添加课程后的课程数量,然后相减等于1则证明成功,也可直接取返回的课程数量total进行验证

createCount = len(coureListAfter) - len(coureListBefore)

assert createCount == 1

# 取出,多出来的一门课程对象

newcourse = None

for one in coureListAfter:

if one not in coureListBefore:

newcourse = one

break

# 检查是否是刚刚添加的课程

assert newcourse!=None

assert newcourse['name']=='classname'

assert newcourse['desc']=='php语言'

assert newcourse['display_idx']==2

# 清除环境操作,删除刚刚添加的课程

delete_course(newcourse['id'],sessionid)

print('\n========= test case pass =============')

得出控制台运行结果。

感谢各位的阅读!关于“python+requests如何实现接口自动化”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


分享标题:python+requests如何实现接口自动化
网页URL:http://cdweb.net/article/pjoesp.html