上一篇文章已經(jīng)知道如何使用python構(gòu)建相應(yīng)的HTTP請求以及定制請求頭和請求消息體等內(nèi)容,本篇文章進一步講解,主要以“實現(xiàn)一條增加課程的接口測試用例為主,來達到用python實現(xiàn)第一個接口自動化程序”進行展開講解熙兔。希望感興趣的小伙伴可以堅持看下去同時歡迎提出寶貴的意見讓我們一起進步储耐!
01:Cookie
1)獲取響應(yīng)中的cookie:如果某個響應(yīng)中包含一些 cookie,你可以快速訪問它們。r.cookies['cookie_name']
2)發(fā)送cookies到服務(wù)器:cookies={'cookie_name':cookie_value}
02:斷言(assert)
1)概述:聲明其布爾值必須為真的判定,如果發(fā)生異常就說明表達式為假。
2)語法:assert condition
3)實例:assert 1==1等
03:增加課程接口自動化測試用例
(1)用例名稱:增加一門不存在的課程
(2)操作步驟:
1.使用工具調(diào)用增加課程API來增加一門系統(tǒng)不存在的課程
2.調(diào)用列出課程API查看課程是否正確增加
(3)期望結(jié)果:
1.返回結(jié)果成功手销,http消息體內(nèi)容如下:
{
"retcode": 0,
"id": 244
}
2.列出課程接口返回已增加的課程信息
04:增加課程接口自動化實例化操作
1)URL寫在config配置文件中
api_server='localhost'
2)定義登錄族奢、創(chuàng)建課程宏邮、列出課程函數(shù)
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)調(diào)用登錄、創(chuàng)建課程钳幅、列出課程函數(shù)且處理響應(yīng)數(shù)據(jù)
import random
from src.api.lib.api_lib import add_course, list_course, login
import traceback
try:
# 登錄
login('auto', 'sdfsdfsdf')
# 添加之前列出課程,獲取返回結(jié)果
courselist1 = list_course()['retlist']
course_name = 'python_' + str(random.randint(0, 100000000))
addret_obj = add_course(course_name,
'python基礎(chǔ)課程',
'1')
if addret_obj.get('retcode', None) == 0:
print('檢查點通過:retcode返回結(jié)果為0')
else:
print(f"檢查點失斞字汀:retcode返回結(jié)果為{addret_obj['retcode']}")
# 添加之后再次列出課程
courselist2 = list_course()['retlist']
# 檢查多出一門課程
if len(courselist2) - len(courselist1) == 1:
print('檢查點通過:多出一門課程')
else:
print('檢查點失敻壹琛:未多出一門課程')
# 多出課程內(nèi)容
course = None
for one in courselist2:
if one not in courselist1:
course = one
break
assert course['name'] == course_name
assert course['desc'] == 'python基礎(chǔ)課程'
assert course['display_idx'] == 1
assert course['id'] == addret_obj['id']
print('\n********用例001執(zhí)行通過********\n')
except:
print('\n********用例001執(zhí)行失敗********\n',traceback.format_exc())