頭條項目接口自動化測試(三)之登錄接口測試

登錄接口測試

1、自動化測試的目錄結構

在這裏插入圖片描述

2、實現登錄接口對象的封裝api_login.py
"""
功能:實現登錄接口對象的封裝
"""
import requests

class ApiLogin(object):
    #登錄方法(url、mobile、code從data的數據文件讀取出來,做參數化處理)
    def api_post_login(self,url,mobile,code):
        #headers定義
        headers= {"Content-Type": "application/json"}
        #data定義
        data={"mobile": mobile,"code": code}
        #調用post並返回響應對象
        return requests.post(url,headers=headers,json=data)
3、登錄接口的業務實現測試用例test_login.py
"""
功能:登錄接口的業務實現測試用例
"""
import unittest
from api.api_login import ApiLogin
from parameterized import parameterized
from tools.read_json import ReadJson

#讀取json數據
def get_data():
    datas=ReadJson("login.json").read_json()
    #建立空列表,添加讀取的json數據
    arrs=[]
    #遍歷多條json數據用例
    for data in datas.values():
        arrs.append((data.get("url"),
                     data.get("mobile"),
                     data.get("code"),
                     data.get("expect_result"),
                     data.get("status_code")))
    return arrs
#登錄測試類
class TestLogin(unittest.TestCase):
    #使用參數化動態獲取參數數據
    @parameterized.expand(get_data())
    def test_login(self,url,mobile,code,expect_result,status_code):
        #設置臨時靜態參數,url、mobile、code(有效一分鐘)
        # url="http://ttapi.research.itcast.cn/app/v1_0/authorizations"
        # mobile="18264152106"
        # code="965754"

        #調用登錄方法,返回響應對象
        result=ApiLogin().api_post_login(url,mobile,code)
        print("響應結果:",result.json())
        #斷言,響應信息,狀態碼
        self.assertEquals(expect_result,result.json()['message'])
        self.assertEquals(status_code,result.status_code)

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

# 響應結果: {'message': 'OK', 'data': {'token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODUxMzA1ODksInVzZXJfaWQiOjEyMzEwNTIyNDk1Njg5MDMxNjgsInJlZnJlc2giOmZhbHNlfQ.QFy0lXJ1So4bwJDLDwjbC6o2KeZyFYnYf2uMz-OAyMo', 'refresh_token': 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODYzMzI5ODksInVzZXJfaWQiOjEyMzEwNTIyNDk1Njg5MDMxNjgsInJlZnJlc2giOnRydWV9.TcgtEJs1p87aM5k5g9gqe46uSvddR_9MA9dMkpf9uVQ'}}

4、json數據login.json
{
  "login001":{
      "url":"http://ttapi.research.itcast.cn/app/v1_0/authorizations",
      "mobile":"18264152106",
      "code":"222337",
      "expect_result":"OK",
      "status_code":201
  },
   "login002":{
      "url":"http://ttapi.research.itcast.cn/app/v1_0/authorizations",
      "mobile":"18264152101",
      "code":"222337",
      "expect_result":{"mobile":"18264152101 is not a valid mobile"},
      "status_code":400
  }
}
5、讀取json數據工具類reas_json.py
"""
功能:讀取json數據,返回json對象
"""
import json
class ReadJson(object):
    #初始化json地址
    def __init__(self,fileName):
        self.filePath="../data/"+fileName
    #讀取json
    def read_json(self):
        with open(self.filePath,"r",encoding="utf-8") as f:
            #調用load方法加載文件流
            return json.load(f)



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