HttpRunner+Mysql查询实现接口测试
程序员文章站
2022-04-10 13:56:10
一、框架版本httprunner 2.X二、实现场景-实现充值接口测试首先登陆鉴权,获取token后,运行“充值接口”,充值完毕后,在数据库查询充值数据,与充值前金额做差,进行校验。三、接口文档四、代码设计思路:接口调用前,先查下数据库余额(假设是1000),然后将想要充值的金额(定义好是600),两者求和,1000+600=1600.。调用接口,看返回值,取出金额字段的值,进行断言,如果是1600,那么断言成功,测试通过。1、测试用例recharge_amountchange.yml...
一、框架版本
httprunner 2.X
二、实现场景
实现充值接口测试
三、接口文档
四、代码
设计思路:
接口调用前,先查下数据库余额(假设是1000),然后将想要充值的金额(定义好是600),两者求和,1000+600=1600.。
调用接口,看返回值,取出金额字段的值,进行断言,如果是1600,那么断言成功,测试通过。
1、测试用例recharge_amountchange.yml:
config:
name: "充值接口测试"
teststeps:
-
# 第一步,登录
name: "登录"
#需要引用api文件夹中的接口(接口代码不方便公开)
api: api/login.yml
variables:
extract:
- token: content.data.token_info.token
validate:
- eq: [content.code, 0]
- eq: ["content.msg", "OK"]
-
# 第二步, 充值
name: "充值"
#需要引用api文件夹中的接口(接口代码不方便公开)
api: api/recharge.yml
variables:
#充值金额
amount: 600
#用户id
inver_user_id: ${ENV(inver_user_id)}
#充值前余额,需要引用debugtalk里面的方法
before_amount: ${before_recharge_amount($inver_user_id)}
#充值后余额,需要引用debugtalk里面的方法
new_amount: ${new_recharge_amount($amount,$before_amount)}
validate:
- {"check":"content.code","comparator":"eq","expect":0}
- {"check":"content.msg","comparator":"contains","expect":"OK"}
#接口返回值与预期值对比(new_amount)
- {"check":"content.data.leave_amount","comparator":"eq","expect":$new_amount}
2、将自定义的方法写入debugtalk.py(框架自带的文件,可写入自己需要的方法)
import handle_mysql
#查询充值前余额
def before_recharge_amount(inver_user_id):
sql1="SELECT leave_amount FROM member WHERE id ="
sql2=str(inver_user_id)
sql3=';'
#拼接sql语句
check_sql =sql1+sql2+sql3
#创建实例
sql_class=handle_mysql.HandleMysql()
#调用实例类中的方法
mysql_data = sql_class.get_one_value(sql=check_sql)
sql_class.close()
return float(mysql_data['leave_amount'])
#计算充值后的余额
def new_recharge_amount(amount,before_amount):
return float(amount)+float(before_amount)
3、连接mysql方法handle_mysql工具类
class HandleMysql:
"""
执行sql语句
"""
def __init__(self):
self.conn = pymysql.connect(host="XXXXXXX",
user="XXXXXXX",
password="XXXXXXX",
db="XXXXXXX",
port=3306,
charset='utf8', # 这里只能写为utf8
cursorclass=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()
def get_one_value(self, sql, args=None):
self.cursor.execute(sql, args=args)
self.conn.commit()
return self.cursor.fetchone()
def get_values(self, sql, args=None):
self.cursor.execute(sql, args=args)
self.conn.commit()
return self.cursor.fetchall()
def close(self):
self.cursor.close()
self.conn.close()
本文地址:https://blog.csdn.net/weixin_38917342/article/details/107549118
推荐阅读
-
利用Python如何实现数据驱动的接口自动化测试
-
Sql语句与存储过程查询数据的性能测试实现代码
-
python接口自动化测试之接口数据依赖的实现方法
-
php调用百度人脸识别接口查询数据库人脸信息实现验证登录功能
-
Python使用Flask实现RESTful API,使用Postman工具、requests库测试接口
-
JavaWeb如何实现统一查询接口(jfinal)
-
Python+request+unittest实现接口测试框架集成实例
-
Sql语句与存储过程查询数据的性能测试实现代码
-
使用RAP2和Mock.JS实现Web API接口的数据模拟和测试
-
PHP实现手机归属地查询API接口实现代码