前言:
数据驱动主要有两种方式:
- 数据库驱动:MySQL、Oracle、PostgreSQL、SQL Server(数据驱动:用外部数据来驱动测试用例的执行)
- 数据文件驱动:csv文件最典型、xml文件、txt文件
使用之前,先介绍一下游标的概念和使用游标的好处
游标,通俗的解释就是"游动的标志",这是数据库中一个很重要的概念。
有时候,我们执行一条查询语句的时候,往往会得到N条返回结果,执行sql语句取出这些返回结果的接口(起始点),就是游标。沿着这个游标,我们可以一次取出一行记录。
当不使用游标功能,我们去执行 select * from student where age > 20; 这条语句的时候,如果有1000条返回结果,系统会一次性将1000条记录返回到界面 中,你没有选择,也不能做其他操作。
当我们开启了游标功能,再去执行这条语句的时候,系统会先帮你找到这些行, 先给你存放起来,然后提供了一个游标接口。当你需要数据的时候,就借助这个游标去一行行的取出数据,你每取出一条记录,游标指针就朝前移动一次,一直到取完最后一行数据后。
如果不使用游标功能,直接使用select查询,会一次性将结果集打印到屏幕上,你无法针对结果集做第二次编程。
使用游标功能后,我们可以将得到的结果先保存起来,然后可以随意进行自己的编程,得到我们最终想要的结果集。
一、数据库驱动
Python3之后不再支持MySQLdb的方式进行访问mysql数据库;
可以采用pymysql的方式:
#导包
import pymysql
# 1.连接数据库,创建一个数据库对象
connect = pymysql.connect(
host='ip',
port=3306,
user='username',
password='password*',
db='test',
charset='utf8',
)
# 2.开启游标功能,创建游标对象,使用cursor()方法获取操作游标
cur = connect.cursor()
# 3.使用execute()方法,执行SQL语句。
# 当开启游标功能执行这个SQL语句后,
# 系统并不会将结果直接打印到屏幕上,而是将得到的结果,找个地方储存起来,
# 提供一个游标接口给我们,当你需要获取数据的时候,就可以从中拿数据。
cur.execute("select name,user_name from 表名")
# 4.使用fetchone()或fetchall()获取数据
# fetchone()一次性获取一条数据,每条记录时一个元组形式的数据
# fetchall()一次性获取所有数据,返回的是一个元组列表
mysql_data = cur.fetchall()
# 5.输出
for row in mysql_data:
a = {
'姓名':row[0],
'手机号':row[1]
}
print(a)
# 6.断开数据库,释放资源
connect.close()
二、数据文件驱动
import csv
csv_file = open("xxx.csv","r",encoding="utf8")
csv_data = csv.reader(csv_file)
for row in csv_data:
# 进行测试,使用字典类型
data_to_test = {
"key1":row[0],
"key2":row[1]
}
csv_file.close()