数据库:
项目:1、key_demo——2、key_demo/cases|tool——3、cases/case.py|tool/MyDB.py
1.key_demo——2.key_demo/config——3、key_demo/config/dbconfig.conf
MyDB.py
# -*- coding: utf-8 -*-
# @Author : hxy
# @Time : 2022/1/18 15:20
# @Function:
import pymysql
import configparser
class my_db:
'''
动作类:获取数据连接,连接ip,端口,账号密码。。
'''
# 构造函数
def __init__(self, config_file, db):
# 实例化configparser
config = configparser.ConfigParser()
# 从配置文件中读取数据库相关信息
config.read(config_file)
host = config[db]['host']
port = int(config[db]['port'])
user = config[db]['user']
password = config[db]['password']
database = config[db]['database']
charset = config[db]['charset']
try:
self.dbconn = pymysql.connect(host, port, user, password, database, charset)
except Exception as e:
print('初始化数据库连接失败:%s' % e)
def close(self):
self.dbconn.close()
# query=查询语句
def select_record(self, query):
# 查询数据
print('query:%s' % query)
try:
# 建立游标
db_cursor = self.dbconn.cursor()
db_cursor.execute(query)
result = db_cursor.fetchall()
return result
except Exception as e:
print('数据库查询数据失败:%s' % e)
db_cursor.close()
exit()
# 插入
def execute_insert(self, query):
print('query:%s' % query)
try:
# 建立游标
db_cursor = self.dbconn.cursor()
db_cursor.execute(query)
db_cursor.execute('commit')
return True
except Exception as e:
print('数据库插入数据失败:%s' % e)
# 事务回滚
db_cursor.execute('rollback')
db_cursor.close()
exit()
dbconfig.conf
#测试环境
[TESTDB]
host=127.0.0.1
port=3306
user=root
password=root
db=test_cases
charset=utf8
[DEVDB]
host=192.168.1.2
port=3306
user=root
password=root
db=test_cases1
charset=utf8
#生产环境
[prdDB]
host=192.168.1.4
port=3306
user=root
password=root
db=test_cases2
charset=utf8
cases.py
# -*- coding: utf-8 -*-
# @Author : hxy
# @Time : 2022/1/7 15:07
# @Function:
# 针对数据库中的数据做数据驱动
import time
import unittest
from ddt import ddt, data, unpack
from key_demo.tool.MyDB import my_db
# 必须要实例化,不然会报TypeError: select_record() missing 1 required positional argument: 'query'
# testdb = my_db('key_demo/config/dbconfig.conf','TESTDB')
config_file='key_demo/config/dbconfig.conf'
db='TESTDB'
testdb=my_db(config_file,db)
now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
@ddt
class case(unittest.TestCase):
# @data(*my_db().select_record('select weaid,success from weather'))
@data(testdb.execute_insert('insert into weather(weaid,success,cre_time)values("2","2","%s")' % now))
# @unpack
def test_1(self, t):
print(t)
res = testdb.select_record('select weaid,success from weather')
print(res)
if __name__ == '__main__':
unittest.main()
C:\Users\mihxy\PycharmProjects\venv\Scripts\python.exe "C:\destination\PyCharm Community Edition 2021.1.1\plugins\python-ce\helpers\pycharm\_jb_unittest_runner.py" --path C:/Users/mihxy/PycharmProjects/key_demo/cases/case.py
Testing started at 11:07 ...
Launching unittests with arguments python -m unittest C:/Users/mihxy/PycharmProjects/key_demo/cases/case.py in C:\Users\mihxy\PycharmProjects\key_demo\cases
Traceback (most recent call last):
File "C:\destination\PyCharm Community Edition 2021.1.1\plugins\python-ce\helpers\pycharm\_jb_unittest_runner.py", line 35, in <module>
sys.exit(main(argv=args, module=None, testRunner=unittestpy.TeamcityTestRunner, buffer=not JB_DISABLE_BUFFERING))
File "C:\destination\Python\lib\unittest\main.py", line 100, in __init__
self.parseArgs(argv)
File "C:\destination\Python\lib\unittest\main.py", line 147, in parseArgs
self.createTests()
File "C:\destination\Python\lib\unittest\main.py", line 158, in createTests
self.test = self.testLoader.loadTestsFromNames(self.testNames,
File "C:\destination\Python\lib\unittest\loader.py", line 220, in loadTestsFromNames
suites = [self.loadTestsFromName(name, module) for name in names]
File "C:\destination\Python\lib\unittest\loader.py", line 220, in <listcomp>
suites = [self.loadTestsFromName(name, module) for name in names]
File "C:\destination\Python\lib\unittest\loader.py", line 154, in loadTestsFromName
module = __import__(module_name)
File "C:\Users\mihxy\PycharmProjects\key_demo\cases\case.py", line 16, in <module>
testdb=my_db(config_file,db)
File "C:\Users\mihxy\PycharmProjects\key_demo\tool\MyDB.py", line 21, in __init__
host = config[db]['host']
File "C:\destination\Python\lib\configparser.py", line 960, in __getitem__
raise KeyError(key)
KeyError: 'TESTDB'
Process finished with exit code 1
Empty suite
错误发生代码:
config_file='key_demo/config/dbconfig.conf'
db='TESTDB'
testdb=my_db(config_file,db)
新建conf配置文件时,报过提醒说要安装INTELL IDE插件,但是我直接点击了忽略
如果是这个原因导致的,方便告知我解决方案
--分割线————
MyDB.py文件,运行打印不了数据
我感觉是读 config 文件出了问题
你直接跑下代码 , 看 dbconfig.conf 文件读取是否正常。 我保存的是utf8 格式,所以加了 encoding
import configparser
config = configparser.ConfigParser()
# 从配置文件中读取数据库相关信息
config.read("dbconfig.conf",encoding='utf-8')
print(config['TESTDB']['host'])
如有帮助,请采纳