单元测试pytest,报告存入excel
1、Calc类(处理加减乘除)
class Calc: def add(self,a,b): return a + b def incre(self,a,b): return a - b def multi(self,a,b): return a * b def devide(self,a,b): return a / b
2、Test_Excel类(获取excel用例,进行断言测试,奖结果保存excel)
from datetime import datetime
import openpyxl
import pytest
from Calc import Calc
class Test_Excel:
# 全局计算器对象
# 每次都需要修改的路径
path = "calc测试数据(1).xlsx"
# sheet_name默认为0,即读取第一个sheet的数据
workbook = openpyxl.load_workbook(filename=path)
# 加法
sheetadd = workbook["加法"]
dataadd = sheetadd.iter_rows(min_row=2, values_only=True)
resultadd = []
# 减法
sheetincre = workbook["减法"]
dataincre = sheetincre.iter_rows(min_row=2, values_only=True)
resultincre = []
# 乘法
sheetmulti = workbook["乘法"]
datamulti = sheetmulti.iter_rows(min_row=2, values_only=True)
resultmulti = []
# 除法
sheetdevide = workbook["除法"]
datadevide = sheetdevide.iter_rows(min_row=2, values_only=True)
resultdevide = []
def setup_class(self):
print("开始启动用例执行!!!")
# 初始化 calc 对象
self.calc = Calc()
def teardown_class(self):
print("用例执行结束了!!!")
#保存加法结果
for i in range(len(self.resultadd)):
self.sheetadd.cell(row=i + 2, column=4, value=self.resultadd[i])
self.sheetadd.cell(row=i + 2, column=5, value="邵子龙")
self.sheetadd.cell(row=i + 2, column=6, value=datetime.now())
#保存减法结果
for i in range(len(self.resultincre)):
self.sheetincre.cell(row=i + 2, column=4, value=self.resultincre[i])
self.sheetincre.cell(row=i + 2, column=5, value="邵子龙")
self.sheetincre.cell(row=i + 2, column=6, value=datetime.now())
#保存乘法结果
for i in range(len(self.resultmulti)):
self.sheetmulti.cell(row=i + 2, column=4, value=self.resultmulti[i])
self.sheetmulti.cell(row=i + 2, column=5, value="邵子龙")
self.sheetmulti.cell(row=i + 2, column=6, value=datetime.now())
#保存除法结果
for i in range(len(self.resultdevide)):
self.sheetdevide.cell(row=i + 2, column=4, value=self.resultdevide[i])
self.sheetdevide.cell(row=i + 2, column=5, value="邵子龙")
self.sheetdevide.cell(row=i + 2, column=6, value=datetime.now())
self.workbook.save(filename=self.path)
# 释放 calc 对象变成空
self.calc = None
@pytest.mark.parametrize("data", dataadd)
def testAdd1(self, data):
s = self.calc.add(data[0], data[1])
try:
assert s == data[2]
print("通过")
self.resultadd.append("通过")
except:
print("不通过")
self.resultadd.append("不通过")
assert s == data[2]
@pytest.mark.parametrize("data", dataincre)
def testincre1(self, data):
s = self.calc.incre(data[0], data[1])
try:
assert s == data[2]
print("通过")
self.resultincre.append("通过")
except:
print("不通过")
self.resultincre.append("不通过")
assert s == data[2]
@pytest.mark.parametrize("data", datamulti)
def testmulti1(self, data):
s = self.calc.multi(data[0], data[1])
try:
assert s == data[2]
print("通过")
self.resultmulti.append("通过")
except:
print("不通过")
self.resultmulti.append("不通过")
assert s == data[2]
@pytest.mark.parametrize("data", datadevide)
def testdevide1(self, data):
s = self.calc.devide(data[0], data[1])
try:
assert s == data[2]
print("通过")
self.resultdevide.append("通过")
except:
print("不通过")
self.resultdevide.append("不通过")
assert s == data[2]
3、结果


浙公网安备 33010602011771号