上一篇文章已经知道如何使用python构建相应的HTTP请求以及定制请求头和请求消息体等内容,本篇文章进一步讲解,主要以“实现一条增加课程的接口测试用例为主,来达到用python实现第一个接口自动化程序”进行展开讲解。希望感兴趣的小伙伴可以坚持看下去同时欢迎提出宝贵的意见让我们一起进步!
01:Cookie
1)获取响应中的cookie:如果某个响应中包含一些 cookie,你可以快速访问它们。r.cookies['cookie_name']
2)发送cookies到服务器:cookies={'cookie_name':cookie_value}
02:断言(assert)
1)概述:声明其布尔值必须为真的判定,如果发生异常就说明表达式为假。
2)语法:assert condition
3)实例:assert 1==1等
03:增加课程接口自动化测试用例
(1)用例名称:增加一门不存在的课程
(2)操作步骤:
1.使用工具调用增加课程API来增加一门系统不存在的课程
2.调用列出课程API查看课程是否正确增加
(3)期望结果:
1.返回结果成功,http消息体内容如下:
{
"retcode": 0,
"id": 244
}
2.列出课程接口返回已增加的课程信息
04:增加课程接口自动化实例化操作
1)URL写在config配置文件中
api_server='localhost'
2)定义登录、创建课程、列出课程函数
import requests
from pprint import pprint
import src.api.config as config
g_sessionid=None
#登录
def login(username,password):
#定义全局变量
global g_sessionid
body = {
'username': username,
'password':password
}
res = requests.post(f'http://{config.api_server}/api/mgr/loginReq',
data=body)
g_sessionid=res.cookies['sessionid']
ret_obj = res.json()
pprint(ret_obj)
return ret_obj
#增加课程
def add_course(name,desc,display_idx):
body={
'action': 'add_course',
'data': f'''
{{
"name":"{name}",
"desc":"{desc}",
"display_idx":"{display_idx}"
}}'''}
res = requests.post(f'http://{config.api_server}/api/mgr/sq_mgr/',
data=body,
cookies={'sessionid':g_sessionid})
ret_obj = res.json()
pprint(ret_obj)
return ret_obj
#列出课程
def list_course(pagenum='1',pagesize='20'):
res=requests.get(f'http://{config.api_server}/api/mgr/sq_mgr/',
params={
'action': 'list_course',
'pagenum': pagenum,
'pagesize': pagesize,
},
cookies={'sessionid':g_sessionid})
ret_obj = res.json()
pprint(ret_obj)
return ret_obj
3)调用登录、创建课程、列出课程函数且处理响应数据
import random
from src.api.lib.api_lib import add_course, list_course, login
import traceback
try:
# 登录
login('auto', 'sdfsdfsdf')
# 添加之前列出课程,获取返回结果
courselist1 = list_course()['retlist']
course_name = 'python_' + str(random.randint(0, 100000000))
addret_obj = add_course(course_name,
'python基础课程',
'1')
if addret_obj.get('retcode', None) == 0:
print('检查点通过:retcode返回结果为0')
else:
print(f"检查点失败:retcode返回结果为{addret_obj['retcode']}")
# 添加之后再次列出课程
courselist2 = list_course()['retlist']
# 检查多出一门课程
if len(courselist2) - len(courselist1) == 1:
print('检查点通过:多出一门课程')
else:
print('检查点失败:未多出一门课程')
# 多出课程内容
course = None
for one in courselist2:
if one not in courselist1:
course = one
break
assert course['name'] == course_name
assert course['desc'] == 'python基础课程'
assert course['display_idx'] == 1
assert course['id'] == addret_obj['id']
print('\n********用例001执行通过********\n')
except:
print('\n********用例001执行失败********\n',traceback.format_exc())
网友评论