【Pyhton】【接口自动化】数据校验

做接口自动化,重要的一点就是检查接口返回的数据是否正确,及对比接口返回的数据与我们从数据库中查询到的数据是否相符;

初学者可能会想到将将对应数据取出逐一对比,但这样代码较多且可能会出现些奇奇怪怪的问题;

可通过将数据转为list,然后进行list对比。

 

# coding:utf-8

import pandas as pd

# python3用operator.eq,python2用cmp(cmp无需import)
import operator

class DataCheck():

	def dataCheck(self,data_db,data_api,keys_db=[],keys_api=[],sort_index=None):
		"""
		接口数据正确性校验方法,仅适用于无多重子结构体的响应报文校验

		param data_db:数据库查询数据(或经过处理后的数据库数据)
		param data_api:接口返回数据
		param keys_db:参与对比的字段,全部进行对比则传空
		param keys_api:参与对比的字段,全部进行对比则传空(字段顺序需和db的一致)
		param sort_index:对db数据依照哪个索引进行排序
		return:'true'/'false'
		"""
		# 将数据生成DataFrame,便于转成List进行对比,也便于查看数据
		if keys_db:
			df_db = pd.DataFrame(data_db,columns=keys_db)
		else:
			df_db = pd.DataFrame(data_db)

		if keys_api:
			df_api = pd.DataFrame(data_api,columns=keys_api)
		else:
			df_api = pd.DataFrame(data_api)

		# 将数据转成list,使用cmp进行list对比
		list_db = [list(row) for row in df_db.values]
		list_api = [list(row) for row in df_api.values]

		# python3, 用operator.eq进行list数据对比,返回True/False
		if operator.eq(list_db,list_api) == True:
			return 'true'
		else:
			print(df_db)
			print(df_api)
			return 'false'

		# # python2, 用cmp()进行list数据对比,为0表示数据相同
		# if cmp(list_db,list_api) == 0:
		# 	return 'true'
		# else:
		# 	print df_db
		# 	print df_api
		# 	return 'false'

 

你可能感兴趣的:(自动化测试)