@@ -74,6 +74,56 @@ def testQuery(self, connect):
74
74
connect .return_value .close .assert_called_once ()
75
75
self .assertIsInstance (query_result , ResultSet )
76
76
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
+
77
127
@patch .object (MysqlEngine , "query" )
78
128
def testAllDb (self , mock_query ):
79
129
db_result = ResultSet ()
0 commit comments