Web API04-實現(xiàn)增加課程接口自動化實例

上一篇文章已經(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('檢查點失?。何炊喑鲆婚T課程')
    # 多出課程內(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())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容