读取excel测试数据

unittest 的 testxxx() 本身是不推荐使用函数参数的,然而实际使用时,是不太可能将数据写死,每条用例数据都写一个 testxxx() 方法,所以需要借助配置文件例如excel,然而,又是如何将同一个方法,进行多次测试,并且用到不同的数据,还生成测试报告呢?

如下,提供一种解决方案
在这里插入图片描述


1、用xlrd读取excel数据

import xlrd

def ReadExcel(sheetName,rowNum,colNum):
    excel = xlrd.open_workbook('C:\\Users\admin\\Desktop\\TestData.xlsx')
    sheet = excel.sheet_by_name(sheetName)
    data = sheet.cell_value(rowNum-1,colNum-1)
    return data

2、用 @classmethod 装饰 setUp(),使 self.n 递增

3、注意要点:
(0)Excel数据至少包含用例数据、预期结果
(1)在 TestCase 子类之外,定义一个返回值为 True、False的函数 func(…)
(2)在 TestCase 子类中,定义的测试方法,用 assert func(…) 来处理
(3)for循环用同一个方法构建测试集

for i in range(5): 
	suite.addTest(unittest.makeSuite(类名,"方法开头字符串"))

def myCal(a,b,c,result):		# 这个函数不能写在下边的类里边
	mul = a*b
	r = mul + c
	print a,'*',b,'+',c ,'==',result
	return r == result
#coding=utf-8

import unittest
from unittest import TestSuite
from HTMLTestRunner import HTMLTestRunner
import xlrd

class getExcelData(unittest.TestCase):

	@classmethod
	def setUpClass(self):
		self.n = 1

	@classmethod			# 一般setUp()不需要,这里是为了self.n递增
	def setUp(self):
		self.n = self.n + 1
		print "n = ",self.n

	def aaa(self):
		a = readExcel("testOne",self.n,2)
		b = readExcel("testOne",self.n,3)
		c = readExcel("testOne",self.n,4)
		result = readExcel("testOne",self.n,5)
		assert myCal(a,b,c,result)



if __name__ == "__main__":
	suite = TestSuite()
	for i in range(5):
		print 'i = ',i
		suite.addTest(unittest.makeSuite(getExcelData,'aaa'))

	runner = unittest.TextTestRunner(verbosity=2)
	runner.run(suite)

	fp = file("./excelResult.html",'wb')
	runner = HTMLTestRunner(fp,title="Calculation Result")
	runner.run(suite)
	fp.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值