A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

第三步:利用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 =============')

控制台运行结果:

最后:简单的接口自动化已经完成

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马