接口自动化(1)

pymysql 库

字典游标刚好对应单参数的pytest的参数化!

pymysql速度相对快,更容易进行自动化

对象名对象API
pymysql1 创建db连接
connect
2 创建游标cursor
默认元组游标,字典游标更好用
[{data1},{data2},{data3}]游标里面是一个个的字典
pymysql.cursor.DictCursor
2.1 执行sql语句
2.2 保存select语句结果
3 从游标上提取select结果
3.1 fetchone() 提取一行
3.2 fetchmany(n)提取n行
3.3 fetchall()提取所有数据
4更新类sql(增删改)
4.1 commit()提交
4.2 rollback()回滚
5 close()
先关游标再关数据库

使用:

#
# 1创建db连接
# connect
import pymysql
#                   本地机器
jwdb=pymysql.connect(host="127.0.0.1",port=3306,
                user="root",password="123456",database="jwtest1",
                charset="utf8")
# 2 创建游标cursor() ?
jwcursor=jwdb.cursor(pymysql.cursors.DictCursor) # 字典游标方便 pytest的 ddt 对接~
# 2.1  执行SQL语句
sql="select * from xsb;"
jwcursor.execute(sql)
# 2.2 保存  select  语句的结果
# print(jwcursor.fetchone())
# print(jwcursor.fetchmany(2))
# print(jwcursor.fetchone())
# print(jwcursor.fetchall())
# print(jwcursor.fetchone())

all_data=jwcursor.fetchall() #元组数据~
# 取出班级?--->
# 元组游标缺点   1  数数麻烦  2  记录长度变化的 3 可读性差
print(all_data)
print(all_data[2]['bj'])
print(all_data[2])
# print(all_data[0])



# 3 从游标 提取select 结果
# 3.1   fetchone()    提取一行数据
# 3.2  fetchmany(n) 提取 n行数据
# 3.3  fetchall()  提取所有数据
# 5 close()
# 先关闭游标 再关数据库
jwcursor.close()
jwdb.close()

更新类sql的使用

思路:
            1fetchXXXAPI 不需要
            2 commit()  保存API
     #
# 1创建db连接
# connect
import pymysql
#                   本地机器
jwdb=pymysql.connect(host="127.0.0.1",port=3306,
                user="root",password="123456",database="jwtest1",
                charset="utf8")
# 2 创建游标cursor() ?
jwcursor=jwdb.cursor(pymysql.cursors.DictCursor) # 字典游标
# 2.1  执行SQL语句
sql="insert into xsb  set xh='012',xm='奥特曼',xb='男';"
jwcursor.execute(sql)# 游标执行sql

jwdb.commit() # 数据库保存


jwcursor.close()
jwdb.close()

try语句管理MySQL的事务

#
# 1创建db连接
# connect
import pymysql
#                   本地机器
jwdb=pymysql.connect(host="127.0.0.1",port=3306,
                user="root",password="123456",database="jwtest1",
                charset="utf8")
# 2 创建游标cursor() ?
jwcursor=jwdb.cursor(pymysql.cursors.DictCursor) # 字典游标
# 2.1  执行SQL语句
try:
    sql1="insert into xsb  set xh='102',xm='杨过',xb='男';"
    jwcursor.execute(sql1)# 游标执行sql

    sql2="insert into xsb  set xh='103',xm='小龙女',xb='女';"
    jwcursor.execute(sql2)# 游标执行sql

    jwdb.commit() # 数据库保存
except:
    print("有sql失败,开始回滚。。")
    jwdb.rollback()
else:
    print("全部sql执行成功")
finally:
    print("事务结束~")


jwcursor.close()
jwdb.close()

字符串的切割、查询、类型替换、类型转换

# 1字符串切割---》列表~
import re
from string import Template

jwstr="zhangsan=lisi=wangwu"
jwlist=jwstr.split("=")
print(jwlist)
print(jwlist[1])


# 2 字符串查询查找  提取目标数据~
jwstr2="上游接口授权${aaaaaaa},我爱${大s},我爱${志玲},我爱${一博} ,我爱${社会主义}"
# 正则表达式  (.*?)    0~多个字符
#  根据目标数据的左右边界策略  提取数据呀~
# 左边界 ${   右边界}
zhengze="\\${(.*?)}" #python  \\ 代表正则表达式~
# Python re库  findall api  专门是根据正则从数据中完成查找 存放到列表~
list=re.findall(zhengze,jwstr2)
print(list)



# 3字符串类型替换
# 被替换数据  要求必须字符串  包含 ${}
#  替换数据   要求 必须是字典   ${} 和字典键必须一致~
jwstr3="我是下游接口用例 需要授权码${jwtoken}"
# 运行了接口
shangyou_jieguo={"jwtoken":"aaaaaaaaaa"}
#需要将 授权码aaaa 替换到  字符串中下游接口才可以运行~

# Python  模板字符串 Template(字符串)==》支持替换
#                  safe_substitute ==>发生替换
genghuan=Template(jwstr3)
new_shiji=genghuan.safe_substitute(shangyou_jieguo)
print(new_shiji)
# 4 字符串类型转换
#API
# 字符串   --json.loads()   eval()---》字典
data="{'username':'admin','password':'123'}"
print(type(data)) # 为什么转字典?  答:键值对取值 +才能交给requests发送
print(data)
data2=eval(data)
print(data2)
print(type(data2),data2['username'])
#  字典    --json.dumps()  str()--》字符串

页: 1 2 3


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注