先解释下为什么要使用数据驱动模式:
- 使脚本重复使用,一套数据用同一个脚本
- 数据和脚本分开达到 数据分离,可以让数据多处调用
数据驱动步骤如下:
- 在测试类加上 @ddt
2.在方法上加上@data 装饰器,@data 把参数当做测试数据,参数可以是 单个值,列表,字典, 对于元祖 要用@unpack进行解析多个参数
@data((value1,1),(value2,2))
@unpack
def test_value(self,act_value,expected_value):
assertEqual(expected_value,get_value(act_value))
读取Excel外部数据
如果想读取数据要用到库 xlrd, 如果想写数据用到 xlwt 库 ,
他们提供了操作Excel 的工作簿,工作表 以及单元格的方法 .
思路如下:
调用open_workbook打开文件并返回个文件对象>>> 确认操作的工作表>>> 用for循环 ,循环取值
代码如下:
import xlrd
def get_data():
book=xlrd.open_workbook(file_name)
sheet=book.sheet_by_index(0)
rows=[] # 用于保存值
for i in range(1,sheet.nrows):
rows.append(list(sheet.row_valus(i,0,sheet.ncols)))
return rows
读取数据库的数据
import pyodbc
import pandas as pd
import numpy as np
conn = pyodbc.connect(r'DRIVER={SQL Server Native Client 10.0};SERVER=.;DATABASE=数据库名字;UID=用户名;PWD=密码')
cur = conn.cursor()
sqlcom = 'select 要读取的列名 from 表名'
df = pd.read_sql(sqlcom, con=conn) print(df) print(type(df)) #<class'pandas.core.frame.DataFrame'>
df1 = np.array(df) #先使用array()将DataFrame转换一下
df2 = df1.tolist()#再将转换后的数据用tolist()转成列表
# 转成列表的数据是这样的[[123],['213'],['sa']],使用的时候稍注意一下