完整的自动化测试并不只是校验API返回的数据是否正确,必须要再加上一笔-对数据存的数据存储及变化也做相应校验,才算是完整的。但是很多同学很可能也注意到了,对于mysql查询的数据结果数据类型不是可以直接用来取数很是头疼,本次针对转换数据来个大家做个简单的事例,供大家参考。 1、不对mysql查询出的数据做任何转换 import pymysql from conf import datas def mysql_self(type,sql): if type == 'mysql': conn=pymysql.connect( host=datas['sit']['数据库hosts'], port=int(datas['sit']['数据库端口']), user=datas['sit']['用户名'], passwd=datas['sit']['用户密码'], db=datas['sit']['数据库名称'], charset='utf8' ) cur = conn.cursor() r = cur.execute(sql) info = cur.fetchmany(r) for i in info: logger.info(i) cur.close() conn.commit() conn.close() for row in info: print('row数据类型:',row) return row mysql_self('mysql','select username from userinfo ') 返回数据为‘tuple’,这时是不能直接供接口校验使用的: 2、tuple转str: import pymysql 3、查询数据库数据转换为list: #encoding:utf-8 import pymysql from coin_web_autoApiTest.con.conf import datas from coin_web_autoApiTest.con.mylogs import logger def mysql_self(type,sql): if type == 'mysql': conn=pymysql.connect( host=datas['sit']['数据库hosts'], port=int(datas['sit']['数据库端口']), user=datas['sit']['用户名'], passwd=datas['sit']['用户密码'], db=datas['sit']['数据库名称'], charset='utf8' ) cur = conn.cursor() #语句 # sql = 'select uri from cfc_order where `tel`='13306534323' order by id desc LIMIT 10 ' r = cur.execute(sql) info = cur.fetchmany(r) for i in info: logger.info(i) cur.close() conn.commit() conn.close() #把数据库里取出来的数据,转换成list格式 listdata=[] for row in info: listdata.append(row[0]) return listdata list_data=mysql_self('mysql','select username from userinfo ') print('list_data 数据类型:', type(list_data)) print('list_data 数据:', list_data) 这时返回的数据类型为list,可以list[...]使用 4、查询数据库数据转换为json: # coding=utf-8 这时返回的数据类型为json,可以顺心的耍起来啦 |
|