python自动化数据驱动_Python自动化-数据驱动T007

当用python结合unittest框架进行自动化测试时,有时会遇到一种情况,如登录有多组测试数据,如果我们写多条用例,代码基本上都是重复的,仅仅是数据的区别,那有没有一种类似用例模板的方法,一条用例设计,循环去取这些测试数据,下面介绍下ddt以及xlrd这两个模块的使用,pip install ddt安装

用xlrd去取我们的测试数据,一般我们用excel去维护这些数据,数据除了账号密码,也可以包括加上预期结果等,读取excel封装成一个方法或者类:

# coding:utf-8

import xlrd

class ExcelUtil():

def __init__(self, excelPath, sheetName):

self.data = xlrd.open_workbook(excelPath)

self.table = self.data.sheet_by_name(sheetName)

# 获取第一行作为key值

self.keys = self.table.row_values(0)

# 获取总行数

self.rowNum = self.table.nrows

# 获取总列数

self.colNum = self.table.ncols

def dict_data(self):

if self.rowNum <= 1:

print("总行数小于1")

else:

r = []

j=1

for i in range(self.rowNum-1):

s = {}

# 从第二行取对应values值

values = self.table.row_values(j)

for x in range(self.colNum):

s[self.keys[x]] = values[x]

r.append(s)

j+=1

return r

通过ddt模块去调用从excel里面读取的数据,去循环执行用例:

# coding:utf-8

import ddt

import unittest

from PycharmProjects.UItest.case.read_execl import ExcelUtil

filepath = "C:\\projects\\abc.xlsx"

sheetName = "Sheet1"

data = ExcelUtil(filepath, sheetName)

# print(data.dict_data())

@ddt.ddt

class Test(unittest.TestCase):

def setUp(self) -> None:

print("start")

def tearDown(self) -> None:

print("end")

@ddt.data(*data.dict_data())

def test_login(self, data):

print(data)

if __name__ == '__main__':

unittest.main()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值