文章收藏和取消收藏接口測試
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)