头条项目接口自动化测试(五)之文章收藏和取消收藏接口测试

文章收藏和取消收藏接口测试

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)




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