Skip to content

Commit 1d93484

Browse files
author
王飞
committed
增加单元测试方法。test_get_tables_metas_data
1 parent 3f99565 commit 1d93484

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

sql/engines/test_mysql.py

+50
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,56 @@ def testQuery(self, connect):
7474
connect.return_value.close.assert_called_once()
7575
self.assertIsInstance(query_result, ResultSet)
7676

77+
@patch("MySQLdb.connect")
78+
def test_get_tables_metas_data(self, connect):
79+
"""增加单元测试方法。test_get_tables_metas_data"""
80+
mock_conn = Mock()
81+
mock_cursor = Mock()
82+
connect.return_value = mock_conn
83+
mock_conn.cursor.return_value = mock_cursor
84+
85+
# 模拟查询结果
86+
tables_result = [
87+
{"TABLE_SCHEMA": "test_db", "TABLE_NAME": "test_table"}
88+
]
89+
90+
columns_result = [
91+
{"COLUMN_NAME": "id", "COLUMN_TYPE": "int", "COLUMN_DEFAULT": None, "IS_NULLABLE": "NO", "EXTRA": "auto_increment", "COLUMN_KEY": "PRI", "COLUMN_COMMENT": ""},
92+
{"COLUMN_NAME": "name", "COLUMN_TYPE": "varchar(255)", "COLUMN_DEFAULT": None, "IS_NULLABLE": "YES", "EXTRA": "", "COLUMN_KEY": "", "COLUMN_COMMENT": ""}
93+
]
94+
# 创建要测试的类的实例
95+
new_engine = MysqlEngine(instance=self.ins1)
96+
# Mock self.query 方法
97+
new_engine.query = Mock()
98+
new_engine.query.side_effect = [
99+
Mock(rows=tables_result), # 模拟 tbs 结果
100+
Mock(rows=columns_result) # 模拟 columns 结果
101+
]
102+
# 调用要测试的方法
103+
result = new_engine.get_tables_metas_data(db_name="test_db")
104+
105+
# 断言返回结果是否符合预期
106+
expected_result = [
107+
{
108+
"ENGINE_KEYS": [
109+
{"key": "COLUMN_NAME", "value": "字段名"},
110+
{"key": "COLUMN_TYPE", "value": "数据类型"},
111+
{"key": "COLUMN_DEFAULT", "value": "默认值"},
112+
{"key": "IS_NULLABLE", "value": "允许非空"},
113+
{"key": "EXTRA", "value": "自动递增"},
114+
{"key": "COLUMN_KEY", "value": "是否主键"},
115+
{"key": "COLUMN_COMMENT", "value": "备注"},
116+
],
117+
"TABLE_INFO": {"TABLE_SCHEMA": "test_db", "TABLE_NAME": "test_table"},
118+
"COLUMNS": [
119+
{"COLUMN_NAME": "id", "COLUMN_TYPE": "int", "COLUMN_DEFAULT": None, "IS_NULLABLE": "NO", "EXTRA": "auto_increment", "COLUMN_KEY": "PRI", "COLUMN_COMMENT": ""},
120+
{"COLUMN_NAME": "name", "COLUMN_TYPE": "varchar(255)", "COLUMN_DEFAULT": None, "IS_NULLABLE": "YES", "EXTRA": "", "COLUMN_KEY": "", "COLUMN_COMMENT": ""}
121+
]
122+
}
123+
]
124+
125+
self.assertEqual(result, expected_result)
126+
77127
@patch.object(MysqlEngine, "query")
78128
def testAllDb(self, mock_query):
79129
db_result = ResultSet()

0 commit comments

Comments
 (0)