Commit 94b5c89e by zh

apiautotest-v1

parent 598ce86d
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: __init__.py
# Author: lao_zhao
# Datetime: 2024/7/12 17:33
# Description:
#
# ---------------------------------------------------------------------------
import functools
import logging
import os
import time
# from APIAutoTest_v3_1.common.log import get_log
#
# log = get_log()
"""
pip install pytest-html 用例生成html报告
pytest -vv 用例层目录 --html=报告路径 --self-contained-html
先安装3.2.0的版本,卸载掉,再安装3.1.0版本
"""
"""
失败重跑:pip install pytest-rerunfailures
pytest 用例层目录 --reruns 失败重跑的次数 --reruns-delay 失败重跑的间隔时间
"""
"""
allure生成测试报告的步骤:
1: 生成测试结果的json文件---json非常多
pytest 测试模块 --alluredir=存放json文件的目录 --clean-alluredir
2:根据第一步生成的json文件来生成测试报告:
a): 生成web服务
allure serve 第一步存放的json文件目录
b): 生成静态报告
allure generate 第一步存放的json文件目录 -o 存放静态报告的目录
打开静态报告:allure open 静态报告存放的目录
"""
def get_logs():
# 将日志写入到文件中---流程
# 创建logger
logger = logging.getLogger()
# 设置日志文件中写入的级别
logger.setLevel(level=logging.DEBUG)
# 需要设置日志的名称
log_name = time.strftime("%Y_%m_%d_%H_%M_%S", time.localtime(time.time())) + ".log"
# 获取日志的目录
log_dir = os.path.join(os.path.join(os.path.dirname(__file__), "report"), "result_log")
# 日志路径拼接
log_path = os.path.join(log_dir, log_name)
# 设置日志文件
file_handler = logging.FileHandler(log_path, mode="a", encoding="utf-8")
# 设置日志在文件中显示的格式
log_format = logging.Formatter('%(asctime)s - %(levelname)s: %(message)s')
# 将日志设置格式添加到日志文件中
file_handler.setFormatter(log_format)
# 将日志文件的handler添加到logger对象中
logger.addHandler(file_handler)
return logger
log = get_logs()
# 装饰器
def log_decorator(func_name):
@functools.wraps(func_name) # 让被装饰对象使用它原来的名称,不要使用inner
def inner(*arg, **kwargs):
try:
log.info(f"执行的功能名称为:{func_name.__name__}, 功能所在的文件为:{func_name.__code__.co_filename}, 所在的行为:{func_name.__code__.co_firstlineno}")
value = func_name(*arg, **kwargs)
except Exception as e:
log.error(f"执行的功能名称为:{func_name.__name__}, 功能所在的文件为:{func_name.__code__.co_filename}, 所在的行为:{func_name.__code__.co_firstlineno}报错,错误为:{e}")
raise e
else:
return value
return inner
\ No newline at end of file
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName: test61
# FileName: db.py
# Author: lao_zhao
# Datetime: 2024/7/12 14:10
# Description:
#
# ---------------------------------------------------------------------------
import pymysql
from APIAutoTest_v3_1.common.read_basic_ini import ReadBasicIni
class DB:
def __init__(self):
"""链接数据库,获取链接对象,再获取游标对象"""
ini = ReadBasicIni()
self.conn = pymysql.connect(
host=ini.sql_connect_msg("host"),
port=int(ini.sql_connect_msg("port")),
user=ini.sql_connect_msg("user"),
password=ini.sql_connect_msg("pwd"),
database=ini.sql_connect_msg("database"),
charset="utf8"
)
self.cursor = self.conn.cursor()
def close(self):
self.cursor.close()
self.conn.close()
def delete(self, sql):
"""执行删除的sql语句"""
try:
self.cursor.execute(sql)