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