单元测试pytest,报告存入excel

发布时间 2024-01-09 13:49:08作者: Clark(子龙)

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)

    def setup_class(self):
        print("开始启动用例执行!!!")
        # 初始化 calc 对象
        self.calc = Calc()

    def teardown_class(self):
        print("用例执行结束了!!!")
        self.workbook.save(filename=self.path)
        # 释放 calc 对象变成空
        self.calc = None

    # 加法
    sheetadd = workbook["加法"]
    dataadd = sheetadd.iter_rows(min_row=2, values_only=True)
    resultadd = []

    @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]

        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())

    # 减法
    sheetincre = workbook["减法"]
    dataincre = sheetincre.iter_rows(min_row=2, values_only=True)
    resultincre = []

    @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]

        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())

    # 乘法
    sheetmulti = workbook["乘法"]
    datamulti = sheetmulti.iter_rows(min_row=2, values_only=True)
    resultmulti = []

    @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]

        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())

    # 除法
    sheetdevide = workbook["除法"]
    datadevide = sheetdevide.iter_rows(min_row=2, values_only=True)
    resultdevide = []

    @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]

        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())

3、结果