1. 程式人生 > 實用技巧 >測一個功能函式,以處理表格(用例)的方式來生成測試報告

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

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

首先我先給出要測的功能函式--登入的程式碼

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跑程式