测一个功能函数,以处理表格(用例)的方式来生成测试报告

今天,给大家讲的是通过一张表格,进而处理,来测试一个简单的功能函数的代码逻辑是否有问题。今天讲的东西有很多是可以套用的,几乎就是模板

首先我先给出要测的功能函数--登录的代码

def login_check(username=None, password=None):
    """
    登录校验的函数
    :param username: 账号
    :param password:  密码
    :return: dict type
    """
    if username != None and password != None:
        if username == 'python31' and password == 'lemonban':
            return {"code": 0, "msg": "登录成功"}
        else:
            return {"code": 1, "msg": "账号或密码不正确"}
    else:
        return {"code": 1, "msg": "所有的参数不能为空"}

 这是开发人员写的,我们作为测试人员,要去对它进行白盒测试,检测代码的逻辑问题,有没有出错?但是,我们现在可以用简单的方法,表格来处理,在表格上写测试用例和传入数据,给出表格如下图:

以上两者,是我们的前提准备条件,有了这两者,我们才开始写代码, 那么,如何来进行呢?

一、把excel封装好的模板直接拿过来用

import openpyxl


class Excel:
    def __init__(self, filename, sheet_name):
        self.filename = filename
        self.sheet_name = sheet_name

    def open(self):
        # 第一步:将excel文件加载到一个工作簿对象中
        self.wb = openpyxl.load_workbook(self.filename)
        # 第二步:选择文件中的表单
        self.sh = self.wb[self.sheet_name]

    def read_data(self):
        """读数据"""
        self.open()
        res = list(self.sh.rows)
        # 获取第一行的单元格,用列表推导式来简写代码
        title = [c.value for c in res[0]]
        cases_data = []
        # 遍历除第一行之外所有的行
        for row in res[1:]:
            data = [c.value for c in row]
            case = dict(zip(title, data))
            cases_data.append(case)
        return cases_data

    def write_data(self, row, column, value):
        """写数据"""
        self.open()
        self.sh.cell(row=row, column=column, value=value)
        self.wb.save(self.filename)

二、编写测试用例类

1、定义测试类,再定义一个测试方法
2、去excel中读取用例数据
3、通过ddt实现数据驱动
4、实现用例内部的逻辑

import unittest
from day_15.demo_处理表格示例 import myddt
from day_15.demo_处理表格示例.hand_excel import Excel
from day_15.demo_处理表格示例.login import login_check


@myddt.ddt
class TestLogin(unittest.TestCase):
    excel = Excel(r"C:UsersAdministratorPycharmProjectsexampleday_15demo_处理表格示例cases.xlsx", "login")
    cases_data = excel.read_data()

    @myddt.data(*cases_data)
    def test_login(self, item):
        # 准备数据
        data = eval(item["data"])
        expected = eval(item["expected"])

        # 调用被测的功能函数
        res = login_check(**data)

        # 获取用例所在表单的行号
        case_row = item["case_id"] + 1
        try:
            # 断言
            self.assertEqual(expected, res)
        except AssertionError as e:
            self.excel.write_data(row=case_row, column=5, value="失败")
            print("{}:用例执行失败,失败的信息如下:".format(item['title']))
            print(e)
            raise e
        else:
            self.excel.write_data(row=case_row, column=5, value="通过")
            print("{}:用例测试执行通过!!!".format(item['title']))


if __name__ == '__main__':
    unittest.main()

 记得要引入ddt,修改ddt里面的源码

 

 三、跑程序run

import unittest
from unittestreport import TestRunner

suite = unittest.defaultTestLoader.discover(r"C:UsersAdministratorPycharmProjectsexampleday_15demo_处理表格示例	estcase")
runner = TestRunner(suite,
                    filename="report.html",
                    report_dir=".",
                    title='测试报告',
                    tester='excellent',
                    desc="excellent执行测试生成的报告",
                    templates=1   # 这里可以生成两个风格不同的报告,待会给大家看一下
                    )
runner.run()

 最后把运行的结果给大家看一下:

 

 所以,其实就是这么几个步骤

1.准备要测的函数和表格用例

2.编写测试用例类,导入excel封装和ddt

3.run跑程序

原文地址:https://www.cnblogs.com/xj-excellent/p/13492846.html