问题源于:有很多不同的接口(里面有各自不同的日期字段)需要与数据库里查询出的结果做断言校验,预期结果是从Excel中读取的字符串类型数据,未做任何处理前数据库查询出来的结果如下图所示:
断言要把预期结果转为字典后再与数据库查询出的结果做校验,这样就出现{'ex_asn_num': 'ASN201807240007', 'production_time': datetime.datetime(2018, 7, 22, 0, 0), 'excl_tax_price': Decimal('35.00')}里的datetime.datetime(2018, 7, 22, 0, 0)和Decimal('35.00')无法转换为字典做断言。
关于这种日期格式datetime.datetime(2018, 7, 22, 0, 0)的解决方法:
方法一:
直接数据库查询语句去转换为“2018-7-22 00:00”,
语句如下:
SELECT a.ex_asn_num,b.excl_tax_price,DATE_FORMAT(b.production_time,"%Y-%m-%d %H:%i:%s")
as production_time FROM ssm_wm_asn_record as a,ssm_wm_asn_record_lot as b
WHERE a.ex_asn_num=b.ex_asn_num and b.id="1021586057936064515"
结果如下:
方法二:
在python里转换,代码如下:
def get_one(self, cursor):
value = cursor.fetchone()
for key in value:
if isinstance(value[key], (datetime, date)):
value[key] = value[key].strftime("%Y-%m-%d %H:%M:%S")
elif isinstance(value[key], Decimal):
value[key] = str(value[key])
return value
结果如下:
欢迎来到testingpai.com!
注册 关于