金融项目实战 07|Python实现接口自动化——连接数据库和数据清洗、测试报告、持续集成
目录
一、投资模块(投资接口+投资业务)
二、连接数据库封装 和 清洗数据
1、连接数据库
2、数据清洗
4、调用
三、批量执行测试用例 并 生成测试报告
四、持续集成
1、代码上传gitee
2、Jenkin持续集成
一、投资模块(投资接口+投资业务)
略,之后有机会再补充
二、连接数据库封装 和 清洗数据
1、连接数据库
在util.py文件中添加连接数据库工具类
# 连接库工具 # 数据库连接不上
def conn_mysql(sql):
conn = None
cursor = None
try:
# 1、获取连接对象
conn = pymysql.connect(host="121.43.169.97", user="root", password="Itcast_p2p_20191228", database="czbk_member", port=3306,
charset="utf8", autocommit=True)
# 2、获取游标对象
cursor = conn.cursor()
# 3、执行sql语句
cursor.execute(sql)
# 判断sql语句是否为查询
if sql.split()[0].lower() == "select":
# 返回所有结果
return cursor.fetchall()
# 否则
else:
# 返回受影响的行数
return "受影响的行数:{}".format(cursor.rowcount)
except Exception as e:
GetLog.get_log().error(e)
raise
finally:
# 4、关闭游标
cursor.close()
# 5、关闭连接
conn.close()
2、数据清洗
在util.py文件中添加数据清洗工具类
该工具类实现的目的是删掉注册手机号及其关联表的关联数据,保证每次执行注册接口都能通过
# 清除方法
def clear_data():
sql1 = """
delete i.* from mb_member_info i INNER JOIN mb_member m on i.member_id=m.id where m.phone in ("13600001111","13600001112","13600001113","13600001114")
"""
conn_mysql(sql1)
sql2 = """
delete l.* from mb_member_login_log l INNER JOIN mb_member m on l.member_id=m.id where m.phone in ("13600001111","13600001112","13600001113","13600001114")
"""
conn_mysql(sql2)
sql3 = """
delete from mb_member_register_log where phone in ("13600001111","13600001112","13600001113","13600001114")
"""
conn_mysql(sql3)
sql4 = """
delete from mb_member where phone in ("13600001111","13600001112","13600001113","13600001114")
"""
conn_mysql(sql4)
4、调用
建议下面的代码放在类TestRegisterLogin中的开头
@classmethod
def setUpClass(cls) -> None:
# 清除测试数据
clear_data()
# 提示:必须在test01_xxxx.py中类⽅法中调⽤
三、批量执行测试用例 并 生成测试报告
import os
import time
import unittest
from HTMLTestRunner import HTMLTestRunner
from config import DIR_PATH
# 自动发现当前目录下的所有测试模块并运行
suite = unittest.TestSuite()
case = unittest.defaultTestLoader.discover(start_dir="./script",pattern="test*.py")
suite.addTest(case)
# 设置生成文件的路径和名字
now = time.strftime("%Y-%m-%d-%H-%M-%S")
report_path = DIR_PATH + os.sep + "report" + os.sep + f"测试报告-{now}.html"
with open(report_path, "wb") as f:
runner = HTMLTestRunner(stream=f,title="python自动化测试报告",description="共15+9条测试用例,1条不通过(因为无法执行数据清洗)")
runner.run(suite)
详细看这篇文章的第八部分:
Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果-CSDN博客
四、持续集成
1、代码上传gitee
详细看持续集成 01|Gitee介绍、Pycharm使用Gitee-CSDN博客
2、Jenkin持续集成
详细看持续集成 02|Jenkins介绍与安装、Postman集成Jenkins、代码集成Jenkins-CSDN博客
这里只展示Jenkins中项目的配置: