測一個功能函數,以處理表格(用例)的方式來生成測試報告


今天,給大家講的是通過一張表格,進而處理,來測試一個簡單的功能函數的代碼邏輯是否有問題。今天講的東西有很多是可以套用的,幾乎就是模板

首先我先給出要測的功能函數--登錄的代碼

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:\Users\Administrator\PycharmProjects\example\day_15\demo_處理表格示例\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:\Users\Administrator\PycharmProjects\example\day_15\demo_處理表格示例\testcase")
runner = TestRunner(suite,
                    filename="report.html",
                    report_dir=".",
                    title='測試報告',
                    tester='excellent',
                    desc="excellent執行測試生成的報告",
                    templates=1   # 這里可以生成兩個風格不同的報告,待會給大家看一下
                    )
runner.run()

 最后把運行的結果給大家看一下:

 

 所以,其實就是這么幾個步驟

1.准備要測的函數和表格用例

2.編寫測試用例類,導入excel封裝和ddt

3.run跑程序

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM