python+requests查询接口自动化测试实战(非框架版)

本文介绍了一种确保项目中查询接口返回的数据与数据库查询结果一致性的测试方法。通过具体实例展示了如何实现接口测试,包括获取认证令牌、调用查询接口、数据库查询及结果对比等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

非框架的意思就是没进行封装嘛。。。。(没时间建设,赶工为主)

公司项目的查询接口,查出来的字段值和数据库查出来的字段值作比较,一致的就通过。

注意下面的代码这里

4、接口查询结果与数据库查询结果比较

因为数据库的字段和接口返回的字段存在大小写之分,所以不能直接比较。逐个比较

如果字段一样,请用下面的代码,key_list是用于比较的字段

#key_list = ['id', 'cid', 'aid', 'gid','typeTwoId','typeTwoName','magNickname','magName','magIdCard','magEmail']
# for key in key_list:
#   for i in range(len(place_data)):
#     if place_data[i][key] == results[i][key]:
#         print(key,"第",i,"次匹配")

下面是接口测试的源代码:

# -*- coding: utf-8 -*-
# @Time : 2020/11/17  11:38
# @Author : Liqiju
# @File : place_list_query.py
# @Software : PyCharm
import requests
import json
import pymysql
client_id = "android-place-client"
client_secret = "android-place-secret-8888"
username ="regionAdmin03"
password ="123456"
grant_type ="password"
refresh_token =""
#测试环境
ip = "http://XXX.XXX.XXX.XX:XXXX"

######################1、获取token################################

url =ip+"/api/auth/oauth/token"
data = {"client_id":client_id,"client_secret":client_secret,"username":username,"password":password,"grant_type":grant_type,"refresh_token":refresh_token}
headers = {"Content-Type":"application/x-www-form-urlencoded"}
res = requests.post(url=url,data=data,headers=headers)
#print("返回的Token字符串数据:\n",res.text)
res_data = res.text
dict_res = json.loads(res_data)
access_token = dict_res['data']["access_token"]
#print("access_token是:\n",access_token)

########################2、查询场所列表#############################
print("开始验证网格员查询场所列表接口。。。")
print("网格员名字是",username)
url_grid =ip+"/api/fob/places/list"
data = {"currentPage":1,"pageSize":20,"grade":""}
Authorization = "bearer "+access_token
headers = {"Authorization":Authorization}

res1 = requests.get(url=url_grid,params=data,headers=headers)

#print("场所列表查询成功,返回字符串数据:\n",res1.text)
res1_data = res1.text
dict_res1 = json.loads(res1_data)
place_data = dict_res1["data"]["list"]
#place_data = str(place_data).lstrip('[').rstrip(']')
print("----处理后的场所数据----:\n",place_data)
#print("第一个数据:\n",place_data[0]['id'])


#print("处理后的场所数据类型是:\n",type(place_data))
########################3、数据库查询#############################
db = pymysql.connect('XXX.XXX.XXX.XX', 'root', 'yelink123456', 'ifp_user')  # 建立数据库连接

cursor = db.cursor()  # 创建一个游标对象cursor

# SQL查询语句
sql = ("SELECT unit_name from sys_users where  user_name ='%s'")%username
try:
    # 执行sql语句
    cursor.execute(sql)
    # 获取所有记录列表
    result = cursor.fetchone()
    result = result[0]
   # print("ifp_user表查询成功,社区名字是:\n",result)
  #  print(type(result))
except:
    print("查询出错")
# 关闭数据库连接
db.close()
#####++++++++++++++++++++++++++++++++++++++++++
db_facilities = pymysql.connect('XXX.XXX.XXX.XX', 'root', 'yelink123456', 'ifp_model')  # 建立数据库连接

sql_1 = "SELECT   id,cid,aid,gid,type_two_id,type_two_name,mag_nickname,mag_name,mag_id_card,mag_email FROM ifp_facilities where g_name ='桥头社区' ORDER by id desc"

#cursor1 =db_facilities.cursor()
cursor1 =db_facilities.cursor(pymysql.cursors.DictCursor)
try:
    # 执行sql语句
    cursor1.execute(sql_1)
    # 获取所有记录列表
    results = cursor1.fetchall()
    print("ifp_facilities表查询成功,查询的结果是\n",results)
 #   print("该数据类型是:\n",type(results))
 #   print(results[0][0])
except:
    print("查询出错")
# 关闭数据库连接
db_facilities.close()

########################4、接口查询结果与数据库查询结果比较#############################
print("进行数据库字段比对。。。。")
#key_list = ['id', 'cid', 'aid', 'gid','typeTwoId','typeTwoName','magNickname','magName','magIdCard','magEmail']
# for key in key_list:
#   for i in range(len(place_data)):
#     if place_data[i][key] == results[i][key]:
#         print(key,"第",i,"次匹配")
for i in range(len(place_data)):
    if place_data[i]['id'] == results[i]['id']:
        print("第",i+1,"个场所的场所id校验比对通过")
    if place_data[i]['cid'] == results[i]['cid']:
        print("第", i + 1, "个场所的单位id校验比对通过")
    if place_data[i]['aid'] == results[i]['aid']:
        print("第", i + 1, "个场所的区域id校验比对通过")
    if place_data[i]['aid'] == results[i]['gid']:
        print("第", i + 1, "个场所的网格id校验比对通过")
    if place_data[i]['typeTwoId'] == results[i]['type_two_id']:
        print("第",i+1,"个场所的设施类型2id校验比对通过")
    if place_data[i]['typeTwoName'] == results[i]['type_two_name']:
        print("第", i + 1, "个场所的类型2名称校验比对通过")
    if place_data[i]['magNickname'] == results[i]['mag_nickname']:
        print("第", i + 1, "个场所的负责人真实姓名校验比对通过")
    if place_data[i]['magName'] == results[i]['mag_name']:
        print("第", i + 1, "个场所的经营人账号校验比对通过")
    if place_data[i]['magIdCard'] == results[i]['mag_id_card']:
        print("第", i + 1, "个场所的经营人身份证号码校验比对通过")
    if place_data[i]['magEmail'] == results[i]['mag_email']:
        print("第", i + 1, "个场所的经营人邮箱校验比对通过")
    print("-----------------------------------------------")
print("接口测试通过。。。。")

看看结果:

OK。下一步分享增加接口、删除接口、更改接口。

2020年11月20日

---------------------------------------------------------------

2020年11月23号更新。

第72行代码没有把上面的变量赋值在SQL里。

正确代码如下

sql_1 = ("SELECT   id,cid,aid,gid,type_two_id,type_two_name,mag_nickname,mag_name,mag_id_card,mag_email FROM ifp_facilities where g_name ='%s' ORDER by id desc")%result

关于字符串提取变量的方法请移步python 字符串里面提取变量的方法

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试李同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值