单元测试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、结果

 

posted @ 2024-01-09 13:48  Clark(子龙)  阅读(199)  评论(0)    收藏  举报