【Web_接口測試_Python3_Requests庫】Requests數據庫get/post/put/delete協議接口測試,自動化測試案例


#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2019-08-18 and 12:23
FileName:apiTest.py
Description:...

# 導入接口測試庫
import requests,json,time
from pprint import pprint

# 配置fiddler代理,請求後面帶上proxies=proxies, verify=False,就可以通過fiddler攔截請求
# proxies = {'http': 'http://localhost:****', 'https':'http://localhost:****'}
# response = requests.post(url, data=payload, proxies=proxies, verify=False)

# 測試環境Host(ip等銘感信息建議放在單獨的py文件中)
testHost = "127.0.0.1:****"
# 獲取當前時間戳
nowTime = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))

#基本類(後面類都繼承並調用該類)
class Basic:
    # 登錄賬戶
    def login(self,username,password):
        # 儘可能少用globa全局變量
        # global cookies
        print("\n----登錄賬戶----\n")
        url = f"http://{testHost}/api/mgr/loginReq"
        payload = {"username":username,"password":password}
        response = requests.post(url, data=payload)
        loginres = dict(response.json())
        self.cookies = dict(response.cookies)
        self.sessionid = response.cookies['sessionid']
        # print(f"登錄成功:{loginres}...{cookies}")
        if loginres["retcode"] == 0:
            print(f"登錄成功:{loginres},獲取cookeis:{self.cookies}")
        else:
            print(f"登錄失敗,賬號或密碼錯誤!錯誤信息:{self.cookies}")
        return loginres
# 課程類
class Course(Basic):
    def __init__(self,cookies=None):
        self.cookies = cookies

    # 列出課程
    def list_course(self,pagenum,pagesize):
        # get請求(參數用params,不用data)
        print("\n----列出課程----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        payload = {'action':'list_course','pagenum':pagenum,'pagesize':pagesize}
        # params可以避免參數中包含&等特殊字符
        listHttp = requests.get(url=url, params=payload,cookies=self.cookies)
        listret = listHttp.json()
        # print(type(getret))
        print(str(listret)+",列出課程信息!")
        return listret

    # 添加課程
    def add_course(self,name,desc,display_idx):
        # post請求
        print("\n----添加課程----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        headers = {"Content-Type":"application/x-www-form-urlencoded"}
        payload = {'action': 'add_course','data': f'{{"name":"{name}","desc":"{desc}","display_idx":{display_idx}}}'}
        # payload = {'action': 'add_course','data': '{"name":"%s","desc":"%s","display_idx":%s}'% (name, desc, display_idx)}
        addHttp = requests.post(url=url, headers=headers, data=payload,cookies=self.cookies)
        addtret = addHttp.json()
        # print(type(postret))
        pprint(str(addtret)+",添加課程信息!")
        return addtret

    # 刪除課程
    def delete_course(self,cid):
        # post請求
        print("\n----刪除課程----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        headers = {"Content-Type":"application/x-www-form-urlencoded"}
        payload = {'action': 'delete_course','id': cid}
        delHttp = requests.delete(url=url, headers=headers, data=payload,cookies=self.cookies)
        deltret = delHttp.json()
        # print(type(postret))
        pprint(str(deltret)+",刪除課程信息!")
        return deltret

    # 修改課程
    def modify_course(self,cid,name,desc,display_idx):
        # post請求
        print("\n----修改課程----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        headers = {"Content-Type":"application/x-www-form-urlencoded"}
        payload = {'action':'modify_course',
                   'id':cid,
                  'newdata':
                   '''
                  {"name":"%s",
                  "desc":"%s",
                  "display_idx":"%s"
                  }'''%(name,desc,display_idx)
        }
        delHttp = requests.put(url=url, headers=headers, data=payload,cookies=self.cookies)
        deltret = delHttp.json()
        # print(type(postret))
        pprint(str(deltret)+",修改課程信息!")
        return deltret
#老師類
class Teacher(Basic):
    def list_teacher(self,pagenum="1",pagesize="100"):
        print("\n----列出老師----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        payload = {"action":"list_teacher","pagenum":pagenum,"pagesize":pagesize}
        response = requests.get(url=url,params=payload,cookies=self.cookies)
        listres = response.json()
        pprint(f"{listres}"+",列出老師信息")
        return listres

    def add_teacher(self,realname,username,desc,display_idx,courses,password='sq888'):
        print("\n----添加老師----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        headers = {"Content-Type":"application/x-www-form-urlencoded"}
        payload = {"action":"add_teacher",
                   "data":f'''
                          {{"realname":"{realname}","username":"{username}","desc":"{desc}","display_idx":{display_idx},
                          "courses":{json.dumps(courses)},
                          "password":"{password}"}}'''
                   }
        response = requests.post(url=url,headers=headers,data=payload,cookies=self.cookies)
        addres = response.json()
        pprint(str(addres)+",新增老師信息!")
        return addres

    # 刪除老師
    def delete_teacher(self, tid):
        # post請求
        print("\n----刪除老師----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        headers = {"Content-Type": "application/x-www-form-urlencoded"}
        payload = {'action': 'delete_teacher', 'id': tid}
        response = requests.delete(url=url, headers=headers, data=payload, cookies=self.cookies)
        deltret = response.json()
        # print(type(postret))
        pprint(str(deltret) + ",刪除老師信息!")
        return deltret

    # 修改老師
    def modify_teacher(self,tid,realname,username,desc,display_idx,courses,password='sq888'):
        # post請求
        print("\n----修改老師----\n")
        url = f"http://{testHost}/api/mgr/sq_mgr/"
        headers = {"Content-Type": "application/x-www-form-urlencoded"}
        payload = {"action": "modify_teacher",
                   "id":f'{tid}',
                   "newdata":f'''
                          {{"realname":"{realname}","username":"{username}","desc":"{desc}","display_idx":{display_idx},
                          "courses":{json.dumps(courses)},
                          "password":"{password}"}}'''
                   }
        response = requests.put(url=url, headers=headers, data=payload, cookies=self.cookies)
        deltret = response.json()
        # print(type(postret))
        pprint(str(deltret) + ",修改老師信息!")
        return deltret

# 自測函數
if __name__== '__main__':
    # ----測試老師
    test = Teacher()
    # 登錄
    loginres= test.login('auto', 'sdfsdfsdf')
    # 新增老師
    test.add_teacher(f"老師姓名{nowTime}",f"登錄名稱{nowTime}",f"描述{nowTime}",10,
                     [{"id":1198,"name":"測試課程2019-08-24 13:06:14"},{"id":1199,"name":"測試課程2019-08-24 13:06:47"}])
    # 列出老師
    test.list_teacher(1,100)
    # 修改老師
    test.modify_teacher(255,f"老師姓名{nowTime}1",f"登錄名稱{nowTime}1",f"描述{nowTime}1",10,
                     [{"id":1198,"name":"測試課程2019-08-24 13:06:14"},{"id":1199,"name":"測試課程2019-08-24 13:06:47"}])
    # 列出老師
    test.list_teacher(1,100)
    # 批量循環刪除老師
    test.delete_teacher(254)
    tlist = test.list_teacher(1,100)
    newlist = []
    for id in tlist['retlist']:
        newlist.append(id['id'])
    for i in newlist:
        test.delete_teacher(i)

    # # #----測試課程
    # # 子類繼承父類,可以調用父類的方法
    # test = Course()
    # # 登錄賬戶
    # loginres= test.login('auto', 'sdfsdfsdf')
    # # 列出課程
    # test.list_course(1,20)
    # # 添加課程
    # addcourse = test.add_course(f'語文課{nowTime}1','語文描述',5)
    # ccid = addcourse['id']
    # # 修改課程
    # test.modify_course(ccid,f'語文課{nowTime}2','語文描述',5)
    # # 刪除課程
    # test.delete_course(ccid)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章