Python自動(dòng)化測試報(bào)表生成(1)--測試結(jié)果提取

文章信息

技術(shù)前提

本文提供了一種使用pyunit測試框架進(jìn)行 判定類的測試 后,如何提取測試結(jié)果數(shù)據(jù),并呈現(xiàn)出測試報(bào)告方法。

在進(jìn)行本文后續(xù)工作之前,請讀者保證自己具備如下能力:

  1. 會Python編程
  2. 能使用pyunit寫 判定類測試
  3. 了解測試結(jié)果相關(guān)類和函數(shù)

主要內(nèi)容

TextTestResult 結(jié)果中包含的如下內(nèi)容:

  • errors 錯(cuò)誤詳細(xì)信息列表
  • failures 運(yùn)行失敗詳細(xì)信息列表
  • skipped 跳過的詳細(xì)信息列表
  • testsRun 運(yùn)行的用例總數(shù)
TextTestResult內(nèi)容

具體條目

failures為例子:

failures

本測試用例的描述:

編號索引為0的數(shù)據(jù):

  • _testMethodName 測試函數(shù)名稱
  • _testMethodDoc 測試函數(shù)的文檔,這里面一般陳述本測試的功能

打印出來的堆棧錯(cuò)誤信息:

  • 編號索引為1的數(shù)據(jù)。

提取測試結(jié)果代碼

通過加入:

  1. 測試執(zhí)行時(shí)間
  2. 項(xiàng)目ID
  3. 項(xiàng)目版本號
def dict_encode_test_results(test_results, **kwargs):
    """
    將測試結(jié)果進(jìn)行json編碼
    :param test_results:
    :type test_results:  unittest.TestResult
    :return:
    """

    run_time = kwargs.get('run_time', None)
    pro_id = kwargs.get('pro_id', None)
    pro_version = kwargs.get('pro_version', None)

    # 主體部分
    res_dict = dict(
        # was_successful=True if test_results.wasSuccessful() else False,
        was_successful=test_results.wasSuccessful(),
        total=test_results.testsRun,
        failures=len(test_results.failures),
        errors=len(test_results.errors),
        skipped=len(test_results.skipped),
        run_time=run_time,
        pro_id=pro_id,
        pro_version=pro_version
    )

    # 詳細(xì)信息部分
    failure_list = []  # 失敗的內(nèi)容
    for x in test_results.failures:
        note_data = {
            'test_case': x[0]._testMethodName,
            'explain': x[0]._testMethodDoc.rstrip('\n        :return:'),
            'status': 'failures',
            'note': x[1]
        }

        failure_list.append(note_data)

    for i in test_results.errors:
        note_data = {
            'test_case': i[0]._testMethodName,
            'explain': i[0]._testMethodDoc.rstrip('\n        :return:'),
            'status': 'errors',
            'note': i[1]
        }
        failure_list.append(note_data)

    res_dict['details'] = failure_list

    return res_dict

可以提到一個(gè)如下的字典對象:


test_res_dict = {
    "pro_version": "1.16.10.10.1",
    "was_successful": False,
    "skipped": 2,
    "errors": 1,
    "failures": 1,
    "pro_id": "57fa12ec47fc894ee04a2c69",  # 在后臺管理系統(tǒng)中組織信息詳細(xì)信息里面可以查看到:項(xiàng)目ID
    "total": 5,
    "run_time": 51.772,
    "details": [
        {
            "status": "failures",
            "note": "AssertionError: 404 != 403 : gt不等于32位,返回404",
            "explain": "只是用于測試的Demo,沒有太多意義",
            "test_case": "test_getfrontlib_gt_not32"
        }
    ]
}

然后調(diào)用測試報(bào)告系統(tǒng)提供的API文檔,即可將判定測試的結(jié)果上傳到 測試報(bào)告系統(tǒng)服務(wù)器 數(shù)據(jù)庫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,361評論 2 126
  • 1.問:你在測試中發(fā)現(xiàn)了一個(gè) bug ,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè) bug ,你應(yīng)該怎樣解決。 首先,將問題提...
    qianyewhy閱讀 9,389評論 4 123
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    宇文臭臭閱讀 6,870評論 5 101
  • 1.測試與軟件模型 軟件開發(fā)生命周期模型指的是軟件開發(fā)全過程、活動(dòng)和任務(wù)的結(jié)構(gòu)性框架。軟件項(xiàng)目的開發(fā)包括:需求、設(shè)...
    Mr希靈閱讀 22,404評論 7 278
  • 閱讀內(nèi)容: Option B: Facing Adversity, Building Resilience, an...
    思悟記錄儀閱讀 2,177評論 0 5

友情鏈接更多精彩內(nèi)容