该自动化项目使用的是unittest框架,pytest兼容unittest,用哪个框架运行看各自喜好,后面会讲;
多说一句,pytest还是unittest还是testng哪怕是jmeter能完成需要做的事就ok,都是工具而已,不必拘于形式。
第一节 common目录(文件路径设置,封装请求方式method,封装读取excel)
文章目录
- AutomatedTesting
- 前言
- 一、文件路径设置
- 二、封装请求方式method
- 三、封装读取excel
- 总结
前言
接口自动化 项目结构图
目录结构大部分都是常用目录
common - 公共方法
config - 配置文件信息
report - 日志/报告存放
runtest - 运行入口
testfile - 用例文件
tools - 工具箱
DDT - 数据驱动参数化
jenkins - 定时运行
实现:读取表格用例文件,jenkins定时运行,实现接口自动化,并做到数据与代码分离。
一、文件路径设置
代码如下:
"""
@File : setting_path.py
@Time : 2022/4/21
@Author : Mr_桐
"""
# -*- coding:utf-8 -*-
import sys
import os
import time
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
# 时间
current_time = time.strftime("%Y-%m-%d - %H:%M", time.localtime(time.time()))
# 项目根路径
base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 配置文件中全局变量路径
global_ini = os.path.join(base_dir, 'config', 'global.ini')
# 配置文件中邮件配置路径
email_ini = os.path.join(base_dir, 'config', 'email.ini')
# 测试文件路径
excel_dir = os.path.join(base_dir, 'testfile')
# 测试数据路径
testdata_dir = os.path.join(base_dir, 'testfile', 'varible_file')
# 日志路径
log_dir = os.path.join(base_dir, 'report', 'log.text')
# 测试报告路径
result_dir = os.path.join(base_dir, 'report', '接口自动化测试报告.html')
# 测试demo
excel_dir_demo = os.path.join(base_dir, 'testfile','index_case.xlsx')
二、封装请求方式method
代码如下:
"""
@File : method.py
@Time : 2022/4/21
@Author : Mr_桐
"""
# -*- coding:utf-8 -*-
import sys
import os
import requests
import json
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
class RunMain():
# 定义post方法
def send_post(self, headers, url, data):
result = requests.post(url=url, headers=headers, data=data).json()
res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
return res
# 定义put方法
def send_put(self, headers, url, data):
result = requests.put(url=url, headers=headers, data=data).json()
res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
return res
# 定于get方法
def send_get(self, headers, url, data):
result = requests.get(url=url, headers=headers, params=data).json()
res = json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2)
return res
# 根据method值执行请求返回结果
def run_main(self, method, headers, url=None, data=None):
result = None
if method == 'POST':
result = self.send_post(headers, url, data)
elif method == 'PUT':
result = self.send_put(headers, url, data)
elif method == 'GET':
result = self.send_get(headers, url, data)
else:
print("method方法不存在")
return result
三、封装读取excel
代码如下:
"""
@File : read_excel.py
@Time : 2022/4/21
@Author : Mr_桐
"""
# -*- coding:utf-8 -*-
import xlrd
import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
from common import setting_path
class ReadExcel():
def readExcel(fileName, SheetName):
data = xlrd.open_workbook(fileName)
table = data.sheet_by_name(SheetName)
# 获取总行数、总列数
nrows = table.nrows
if nrows > 1:
# 获取第一列的内容,列表格式
keys = table.row_values(0)
listApiData = []
# 获取每一行的内容,列表格式
for col in range(1, nrows):
values = table.row_values(col)
api_dict = dict(zip(keys, values))
listApiData.append(api_dict)
return listApiData
else:
return None
总结
欢迎大家多交流,vx:-20206688
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)