ddt 第三方工具包
ddt数据驱动测试:
什么是数据驱动?
数据驱动是可以将函数外的数据集合,csv,excel,txt等等一些文件引用到当前函数
ddt 有哪些好处,可以减少重复的代码。
可以做到数据与流程进行分离,方便后续的代码管理和维护
ddt:
ddt是一个类的装饰器--修饰类的
unpack:
unpack是拆分data数据的,同时传多个值用元组方式,填写多个值拆分要用unpack拆分
data:
from ddt import ddt,unpack,data
import unittest
@ddt()
class Ddt_Api(unittest.TestCase): data可以重复调用当前输出的函数
@data("第一条测试用例","第二条测试用例","第三条测试用例") 用data的方式传参字符串
def testcase01(self,values):
print(values)
if __name__ == '__main__':
unittest.main()
同时传多组元组数据
@ddt()
class Ddt_Api(unittest.TestCase):
@data(("湖北","武汉"),("湖南","长沙"),("山东","青岛"))
@unpack
def testcase01(self,values,values1):
print("我来自",values,values1)
if __name__ == '__main__':
unittest.main()
多维数组,需要加上*进行传参
data里面的值加上个* 其他一样的
使用ddt驱动文件excel
首先获取excel 导入import xlrd
import xlrd
def cms_excl(path,excl_name,index_values):
book = xlrd.open_workbook(path)
sheet =book.sheet_by_name(excl_name)
rows=sheet.nrows
col_values=sheet.col_values(0)
list1=[]
for i in range(1,rows):
if col_values==index_values:
row_values=sheet.row_values(i,2,6)
list1.append(row_values)
return list1
@ddt()
class Test(unittest.TestCase):
@data(*cms_excl(r"C:\Users\szyc\PycharmProjects\wuhan8\demo\cms_api.xlsx","cmsapi","cms_login"))
@unpack
def testcase(self,values,values1,values2,values3):
print(values,values1,values2,values3)
if __name__ == '__main__':
unittest.main()
把字典转化为json字符串的方法 dumps
import json
list={”湖北“:”武汉“}
b=json.dumps(b,ensure_ascii=False)
将json字符串转化为字典 loads
import json
str=”{”湖北“:”武汉“}“
a=json.loads(str)
print(a)
eval的方法可以将json字符串转化为字典,不能把字典转化为json字符串
print(eval(list1))
|
|