1. 程式人生 > 其它 >python 介面自動化 - 面向物件思想對 Restful 型別的請求進行二次封裝 - 寫用例

python 介面自動化 - 面向物件思想對 Restful 型別的請求進行二次封裝 - 寫用例

根據 Requests 的原始碼進行二次封裝

rest_client.py

import requests

class RestClient():

    def __init__(self, KeepLogin, api_root_url):
        self.KeepLogin = KeepLogin
        self.api_root_url = api_root_url
        

    def get(self, url, data):
        return self.request(url, "GET", data = data)

    def post(self, url, data = None, json = None, **kwargs):
        return self.request(url, "POST", data, json, **kwargs)

    def request(self, url, method, data = None, json = None, **kwargs):
        url = self.api_root_url + url
        if method == "GET":
            return self.KeepLogin.get(url, params = data)
        if method == "POST":
            return self.KeepLogin.post(url, params=data, json=json, **kwargs)



編寫測試用例

import random
import unittest
import requests
from rest_client import RestClient

Userdict = {
    "account": "admin",
    "pwd": "660B8D2D5359FF6F94F8D3345698F88C"
}
Userdict_error = {
    "account": "admin",
    "pwd": "1660B8D2D5359FF6F94F8D3345698F88C"
}

class SMSLoginAndSchoolAdd(unittest.TestCase):
    def setUp(self):
        self.s = requests.session()
        self.url = "http://192.168.233.128:8080/recruit.students"
        self.KeepLogin = RestClient(self.s, self.url)

    def test_01(self):
        print("測試用例01:正確使用者名稱與密碼,登陸成功")
        a = self.KeepLogin.get("/login/in", Userdict)
        self.assertIn("退出", a.text)
        print("測試用例01通過")

    def test_02(self):
        print("測試用例02:正確使用者名稱與錯誤密碼,登陸失敗")
        a = self.KeepLogin.get("/login/in", Userdict_error)
        self.assertNotIn("退出", a.text)
        print("測試用例02通過")

    def test_03(self):
        print("測試用例03:在登陸狀態下成功新增任意學校")
        # 一個隨機學校名和一個隨機備註
        SchoolNameRandom = random.randint(1, 1000000000)
        RemarkRandom = random.randint(1, 100000)

        # 新建學校post請求的body引數
        SchoolAddBody = {
            "schoolName": SchoolNameRandom,
            "listSchoolType[0].id": 2,
            "canRecruit": 1,
            "remark": RemarkRandom
        }
        a = RestClient("http://192.168.233.128:8080/recruit.students")
        a.get("/login/in", Userdict)
        a.post("/school/manage/addSchoolInfo", data=SchoolAddBody)

if __name__ == "__main__":
    unittest.main()



後續可以繼續對 python 介面進行封裝