线性编程04--验库/落库检查

验库 -- 检查落库的正确性

    功能:用于检查数据库数据的正确性
    场景:常用于增加、修改、删除了数据库数据时
1)验库的步骤
导入模块
a)连接数据库
b)指定sql语句
    查询数据库中关键数据的行数,根据行数判断落库是否正确
c)执行sql语句
    cursor=conn.cursor()
        不能多次使用cursor(),因为这会创建多个游标
    cursor.execute(sql,userinfo)
        执行结果在cursor中
    result=cursor.fetchone()
        取游标中的第一行数据,存到元组result中
d)获得数据库结果(行数据或行数)
    查询数据时,commit可以省略
e)比对数据库预期与实际结果
    关闭数据库连接

针对注册接口进行验库

"""
编写正常注册接口的请求代码,检查响应结果和数据库正确性
    接口需求
    接口地址:http://192.168.139.137/exam/signup/
    方法:post
    参数:username,password,confirm,name
    返回值:json类型,注册成功
用例   用户名   密码  确认密码   预期
      test02 123456 123456  {'Status': 1000, 'Result': 'Success', 'Message': '注册成功'}
"""
import requests, pymysql

try:  # 尝试
    # 1.数据库初始化
    # 1)连接数据库
    conn = pymysql.connect(host='192.168.139.137', user='root', password='123456', db='exam')
    # 2)创建游标
    cursor = conn.cursor()
    # 3)指定sql语句(初始化时,主要是增删改)
    sql = "delete from user where username='test02'"
    # 4)执行sql语句
    cursor.execute(sql)
    # 5)提交数据到数据库(保存数据)
    conn.commit()
    # 6)关闭数据库
    conn.close()
    # 2.发送请求
    # 1)指定接口地址和参数
    address = "http://192.168.139.137/exam/signup/"
    argument = {"username": "test02", "password": "123456", "confirm": "123456"}
    # 2)发送数据到接口,接收响应结果
    res = requests.post(url=address, data=argument)
    # 3.验证响应结果
    expect = {'Status': 1000, 'Result': 'Success', 'Message': '注册成功'}
    actual = res.json()
    if expect == actual:
        print("测试通过")
    else:  # 脚本自己要测试一下,if这里叫判定覆盖
        # \n回车 \t 空格 tab键
        print("测试失败==\n\t预期:", str(expect), '==\n\t实际:', str(actual), '==')
    # 4.验库
    # 1)连接数据库
    conn = pymysql.connect(host='192.168.175.128', user='root', password='123456', db='exam')
    # 2) 创建游标
    cursor = conn.cursor()
    # 3) 指定sql语句
    sql = "select count(*) from user where username = 'test02' and password = '123456'"
    # 4)执行sql
    cursor.execute(sql)  # 查询的结果一般保存,增删改不存,结果为元组形式
    actual = cursor.fetchone()  # 获得查询结果中的一行,类型为元组
    # 5)检查落库
    expect_db = 1
    if actual[0] == expect_db:
        print("落库检查通过")
    else:
        print("落库检查失败")
    conn.close()
except Exception as e:  # 排除,特殊情况,错误情况,异常
    print(e)  # 打印异常信息

测试注册接口

"""
编写信息不全时注册接口的请求代码,检查响应结果和数据库正确性
接口需求
接口地址:http://192.168.175.128/exam/signup/
方法:post
参数:username,password,confirm,name
返回值:json类型,注册成功
用例   用户名  密码   确认密码   预期
      test06 123456 ""       {'Status': 1001, 'Result': 'Input Incomplete', 'Message': '输入信息不完整'}
"""
import requests,pymysql
# 延时 -- 编写数据库需要时间  加入等待时间
from time import sleep
try:
    conn = pymysql.connect(host='192.168.139.137',user='root',password='123456',db='exam')
    cursor = conn.cursor()
    sql = "delete from user where username='test06'"
    cursor.execute(sql)
    conn.commit()
    conn.close()
    sleep(3)
    url = "http://192.168.139.137/exam/signup/"
    data = {"username":"test06","password":"123456","confirm":"",'name':'测试06'}
    r = requests.post(url,data)
    expect = {'Status': 1001, 'Result': 'Input Incomplete', 'Message': '输入信息不完整'}
    if expect == r.json():
        print("测试通过")
    else:
        print("测试失败")
    sleep(3)
    conn = pymysql.connect(host='192.168.175.128',user='root',password='123456',db='exam')
    cursor = conn.cursor()
    sql = "select count(*) from user where username='test06' and password='123456'"
    cursor.execute(sql)
    actual = cursor.fetchone()  # 获得查询结果中的一行,类型为元组
    print(actual)
    expect_db = 0
    if expect_db == actual[0]:
        print("落库成功")
    else:
        print("落库失败")
    conn.close()
except Exception as e:
    print(e)
posted @ 2021-11-05 16:52  暄总-tester  阅读(437)  评论(0)    收藏  举报