一.准备测试数据
1.文件目录
2.准备测试用例
命名为api_case.xlsx,放在TestDatas目录里
title:用例名称
method:请求方式
url:接口地址
request_data:参数
files:文件,这里写了文件名,用字符串拼接进行传参
expected:返回结果(在返回结果是多项时,通过列表循环进行对比,再进行断言)
3.准备测试图片
二.封装需要用到的文件
Commom文件夹
1.handle_config
读取ini配置文件
from configparser import ConfigParser
import os
from Commom.handle_path import conf_dir
class HandleConfig(ConfigParser):
def __init__(self,file_path):
super().__init__()
self.read(file_path, encoding="utf-8")
file_path = os.path.join(conf_dir,'nmb.ini')
conf = HandleConfig(file_path)
print(conf.get('log','name'))
2.handle_excel
读取excel中的测试用例
from openpyxl import load_workbook
import json
class HandleExcel:
def __init__(self,file_path,sheet_name):
self.wb = load_workbook(file_path)
self.sh = self.wb[sheet_name]
def __read_titles(self):
titles = []
for item in list(self.sh.rows)[0]: # 遍历第1行当中每一列
titles.append(item.value)
return titles
def read_all_datas(self):
all_datas = []
titles = self.__read_titles()
for item in list(self.sh.rows)[1:]: # 遍历数据行
values = []
for val in item: # 获取每一行的值
values.append(val.value)
res = dict(zip(titles, values)) # title和每一行数据,打包成字典
# 将请求数据从json字符串转换为字典对象
res['request_data'] = json.loads(res['request_data'])
all_datas.append(res)
return all_datas
def close_file(self):
self.wb.close()
3.handle_path
配置文件路径
import os
#获取项目的路径,向上两层
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(base_dir)
#测试用例路径
cases_dir = os.path.join(base_dir,'TestCases')
#测试数据路径
datas_dir = os.path.join(base_dir,'TestDatas')
#测试报告路径
reports_dir = os.path.join(base_dir,'Outputs\\reports')
#日志路径
logs_dir = os.path.join(base_dir,'Outputs\\logs')
#配置文件路径
conf_dir = os.path.join(base_dir,'Conf')
4.handle_requests
封装请求头/请求方法以及日志输出
因为这个没有必要的请求头,所以请求头为None
import requests
from Commom.my_logger import logger
def __handle_header():
"""
处理请求头。加上项目当中必带的请求头。如果有token,加上token。
:param token: token值
:return: 处理之后headers字典
"""
headers = {
}
return headers
def send_requests(method, url, data=None, token=None, files=None):
# 得到请求头
logger.info('发起一次HTTP请求')
headers = {
}
logger.info('请求头为:{}'.format(headers))
logger.info('请求方法为:{}'.format(method))
logger.info('请求url为:{}'.format(url))
logger.info('请求数据为:{}'.format(data))
# 根据请求类型,调用请求方法