在common文件夹中新建sql.py,进行sql封装:
import sqlite3
from common.log import log
from setting import DBSql
class MysqlAuto(object):
def __init__(self):
# 连接到SQLite数据库
self.conn = sqlite3.connect(DBSql.sql_file)
# 创建一个Cursor对象并作为属性,用于执行SQL命令
self.cursor = self.conn.cursor()
log.info(f"Connected to database: {DBSql.sql_file}")
def __del__(self):
"""对象资源被释放时触发,在对象即将被测除时的最后操作"""
# 关闭游标和连接
self.cursor.close()
self.conn.close()
log.info('Database connection closed.')
def execute(self, sql_list):
# 执行SQL语句
try:
for i in sql_list: # 语句列表
log.info(f'sql: {i}')
self.cursor.execute(i)
log.debug(self.cursor.fetchall())
# 提交事务:
self.conn.commit()
return self.cursor.fetchall()
except Exception as e:
log.error(f'执行sql出现错误,异常为{e}')
raise e
if __name__ == '__main__':
"""
df_cart_cartinfo
df_goods_goodsinfo
df_goods_typeinfo
df_order_orderdetailinfo # 清空
df_order_orderinfo # 清空
df_user_goodsbrowser
df_user_userinfo # 清空
"""
# sql = ['select * from df_user_userinfo']
# del_sql = 'DELETE FROM df_order_orderinfo;'
# MysqlAuto().execute(DBSql.sql_list)
# sql = ['select * from df_cart_cartinfo']
# order_id = MysqlAuto().execute(sql)
# log.info(order_id)
# log.info(len(order_id))
# MysqlAuto().execute(['select * from df_user_userinfo'])
MysqlAuto().execute(DBSql.sql_list)
setting.py中导入数据库,加上初始化的语句:
class ENV:
# 被测环境
url = 'http://127.0.0.1:8000/'
class DBSql:
# 初始化时清除数据sqL语句
# 清空:用户、购物车、订单信息
# 并插人:测试用户test123456
# sql_file=rf'\\{ENV.host_ip}\daily_fresh_demo-master\db.sqlite3' # 另一台电脑
sql_file = rf'D:\daily_fresh_demo\daily_fresh_demo-master\db.sqlite3' # 本地
sql_list = [
'DELETE FROM df_order_orderdetailinfo',
'DELETE FROM df_order_orderinfo',
'DELETE FROM df_user_userinfo',
'DELETE FROM df_cart_cartinfo',
"INSERT INTO 'df_user_userinfo' VALUES('46', 'fb15a1bc444e13e2c58a0a502c74a54106b5a0dc', 'test123456@qq.com', '', '', '', '', 'test123456')"
]
在conftest.py加入初始化语句:
import pytest
from selenium import webdriver
from common.log import log
from common.sql import MysqlAuto
from setting import ENV, DBSql
@pytest.fixture(scope='class')
def login():
# 打开浏览器,和基本设置
driver = webdriver.Chrome()
log.debug('打开浏览器')
driver.get(ENV.url)
driver.maximize_window() # 最大化窗口
log.debug('最大化窗口')
driver.implicitly_wait(10) # 隐式等待,全局
# 初始化数据
MysqlAuto().execute(DBSql.sql_list)
yield driver
driver.quit()
log.debug('窗口关闭')