頭條項目接口自動化測試(五)之文章收藏和取消收藏接口測試

文章收藏和取消收藏接口測試

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

在這裏插入圖片描述

2、實現文章接口對象的封裝api_articel.py
"""
功能:實現文章接口對象的封裝
"""
import requests

class ApiArticle(object):
    #收藏文章
    def api_post_collection(self,url,headers,data):
        #調用post方法,返回響應對象
        return requests.post(url,headers=headers,json=data)
    #取消收藏文章
    def api_delete_article(self,url,headers):
        #調用delete方法,返回響應對象
        return requests.delete(url,headers=headers)
3、文章接口的業務實現測試用例test_articel.py
"""
功能:文章收藏和取消收藏的業務實現
"""
import unittest

from parameterized import parameterized

from api.api_articel import ApiArticle
from tools.read_json import ReadJson

#獲取收藏文章收據
def get_data_add():
    datas=ReadJson("article_add.json").read_json()
    # 建立空列表,添加讀取的json數據
    arrs = []
    # 遍歷多條json數據用例
    for data in datas.values():
        arrs.append((data.get("url"),
                     data.get("headers"),
                     data.get("data"),
                     data.get("expect_result"),
                     data.get("status_code")))
    return arrs

#獲取取消收藏數據
def get_data_cancel():
    datas=ReadJson("article_cancel.json").read_json()
    # 建立空列表,添加讀取的json數據
    arrs = []
    # 遍歷多條json數據用例
    for data in datas.values():
        arrs.append((data.get("url"),
                     data.get("headers"),
                     data.get("status_code")))
    return arrs

class TestArticel(object):
    #收藏文章
    @parameterized.expand(get_data_add())
    def test01_collection(self,url,headers,data,expect_result,status_code):
        #臨時數據
        # url="http://ttapi.research.itcast.cn/app/v1_0/article/collections"
        # headers={"Content-Type":"application/json",
        # 	"Authorization":"Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODUxMzA1ODksInVzZXJfaWQiOjEyMzEwNTIyNDk1Njg5MDMxNjgsInJlZnJlc2giOmZhbHNlfQ.QFy0lXJ1So4bwJDLDwjbC6o2KeZyFYnYf2uMz-OAyMo"}
        # data={"target":1}
        #調用收藏文章方法
        result=ApiArticle().api_post_collection(url,headers,data)
        print("收藏響應數據爲:",result.json())
        #斷言,響應狀態碼、響應信息
        self.assertEquals(status_code,result.status_code)
        self.assertEquals(expect_result,result.json()["message"])

    #取消收藏文章
    @parameterized.expand(get_data_cancel())
    def test02_cancel(self,url,headers,status_code):
        #臨時數據
        # url="http://ttapi.research.itcast.cn/app/v1_0/article/collections/1"
        # headers = {"Content-Type": "application/x-www-form-urlencoded",
        #            "Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1ODUxMzA1ODksInVzZXJfaWQiOjEyMzEwNTIyNDk1Njg5MDMxNjgsInJlZnJlc2giOmZhbHNlfQ.QFy0lXJ1So4bwJDLDwjbC6o2KeZyFYnYf2uMz-OAyMo"}
        #調用取消收藏方法
        r=ApiArticle().api_delete_article(url,headers)
        #斷言狀態碼
        self.assertEquals(status_code,r.status_code)

if __name__ == '__main__':
    unittest.main()
4、json數據

article_add.json

{
  "url": "http://ttapi.research.itcast.cn/app/v1_0/article/collections",
  "headers": {"Content-Type": "application/json","Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTAyNTg3MDksInVzZXJfaWQiOjU3LCJyZWZyZXNoIjpmYWxzZX0.1P7ksBYRR3DuDdsAfDynB_jl_MJCkjwkwRC_roJx6OE"},
  "data": {"target": 1},
  "expect_result": "OK",
  "status_code": 201
}

article_cancel.json

{
  "url": "http://ttapi.research.itcast.cn/app/v1_0/article/collections/1",
  "headers": {"Content-Type": "application/x-www-form-urlencoded","Authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE1NTAyNTg3MDksInVzZXJfaWQiOjU3LCJyZWZyZXNoIjpmYWxzZX0.1P7ksBYRR3DuDdsAfDynB_jl_MJCkjwkwRC_roJx6OE"},
  "status_code": 204
}
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)




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