diff --git a/tests/army/community/query/fill/fill_desc.py b/tests/army/community/query/fill/fill_desc.py index 96ae8a4344..3b11e2b768 100644 --- a/tests/army/community/query/fill/fill_desc.py +++ b/tests/army/community/query/fill/fill_desc.py @@ -44,13 +44,11 @@ class TDTestCase(TBase): tdLog.printNoPrefix("==========step3:fill data") tdSql.query(f"select wstart as ts, first(point_value) as pointValue from {dbname}.{tbname} where wstart between '2023-12-26 10:35:00' and '2023-12-26 10:40:00' interval(1M) fill(prev) order by wstart desc limit 100") - tdSql.checkRows(6) - tdSql.checkData(0, 1, 5) - tdSql.checkData(1, 1, 5) - tdSql.checkData(2, 1, 5) - tdSql.checkData(3, 1, 5) - tdSql.checkData(4, 1, 5) - tdSql.checkData(5, 1, 5) + data = [] + for i in : range(6) # 将csv 文件中的数据保存到data中 + row = [i, 1, 5] + data.append(row) # 选择某一列加入到data数组中 + tdSql.checkDataMem(data) def stop(self): tdSql.close() diff --git a/tests/army/frame/sql.py b/tests/army/frame/sql.py index 2e14f0c2f0..19839e217e 100644 --- a/tests/army/frame/sql.py +++ b/tests/army/frame/sql.py @@ -374,6 +374,50 @@ class TDSql: if(show): tdLog.info("check successfully") + def checkDataMem(self, mem): + if not isinstance(mem, list): + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql) + tdLog.exit("%s(%d) failed: sql:%s, expect data is error, must is array[][]" % args) + + if len(mem) != self.queryRows: + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql, len(mem), self.queryRows) + tdLog.exit("%s(%d) failed: sql:%s, row:%d is larger than queryRows:%d" % args) + # row, col, data + for row, rowData in enumerate(mem): + for col, colData in enumerate(rowData): + self.checkData(row, col, colData) + tdLog.info("check successfully") + + def checkDataCsv(self, csvfilePath): + if not isinstance(csvfilePath, str) or len(csvfilePath) == 0: + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql, csvfilePath) + tdLog.exit("%s(%d) failed: sql:%s, expect csvfile path error:%s" % args) + + tdLog.info("read csvfile read begin") + data = [] + try: + with open(csvfilePath) as csvfile: + csv_reader = csv.reader(csvfile) # 使用csv.reader读取csvfile中的文件 + # header = next(csv_reader) # 读取第一行每一列的标题 + for row in csv_reader: # 将csv 文件中的数据保存到data中 + data.append(row) # 选择某一列加入到data数组中 + except FileNotFoundError: + # 当文件不存在时会引发FileNotFoundError异常 + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql, csvfilePath) + tdLog.exit("%s(%d) failed: sql:%s, expect csvfile not find error:%s" % args) + except Exception as e: + # 其他任意类型的异常都将被捕获并输出相应信息 + caller = inspect.getframeinfo(inspect.stack()[1][0]) + args = (caller.filename, caller.lineno, self.sql, csvfilePath, str(e)) + tdLog.exit("%s(%d) failed: sql:%s, expect csvfile path:%s, read error:%s" % args) + + tdLog.info("read csvfile read successfully") + self.checkDataMem(data) + # return true or false replace exit, no print out def checkRowColNoExit(self, row, col): caller = inspect.getframeinfo(inspect.stack()[2][0])