1. 程式人生 > >怎樣從0開始搭建一個測試框架_8——斷言

怎樣從0開始搭建一個測試框架_8——斷言

怎樣從0開始搭建一個測試框架_8

上次我們的用例中增加了斷言。斷言(檢查點)這個東西對測試來說很重要。不然你怎麼知道一個測試結果是對是錯呢。unittest為我們提供了很多很好的斷言,但是對於我們的專案可能是不夠的。我們需要封裝自己的斷言方法。

這裡我們簡單封裝一個斷言,在utils中建立assertion.py檔案,在其中建立斷言:

"""
在這裡新增各種自定義的斷言,斷言失敗丟擲AssertionError就OK。
"""


def assertHTTPCode(response, code_list=None):
    res_code = response.status_code
    if
not code_list: code_list = [200] if res_code not in code_list: raise AssertionError('響應code不在列表中!') # 丟擲AssertionError,unittest會自動判別為用例Failure,不是Error

這個斷言傳入響應,以及期望的響應碼列表,如果響應碼不在列表中,則斷言失敗。

在test_baidu_http.py中新增此斷言:

import unittest
from utils.config import Config, REPORT_PATH
from
utils.client import HTTPClient from utils.log import logger from utils.HTMLTestRunner import HTMLTestRunner from utils.assertion import assertHTTPCode class TestBaiDuHTTP(unittest.TestCase): URL = Config().get('URL') def setUp(self): self.client = HTTPClient(url=self.URL, method='GET'
) def test_baidu_http(self): res = self.client.send() logger.debug(res.text) assertHTTPCode(res, [400]) self.assertIn('百度一下,你就知道', res.text) if __name__ == '__main__': report = REPORT_PATH + '\\report.html' with open(report, 'wb') as f: runner = HTMLTestRunner(f, verbosity=2, title='從0搭建測試框架 灰藍', description='介面html報告') runner.run(TestBaiDuHTTP('test_baidu_http'))

我們新增斷言,響應碼在[400]中,執行會發現fail掉了。

在assertion.py中你可以新增更多更豐富的斷言,響應斷言、日誌斷言、資料庫斷言等等,請自行封裝。

所有的程式碼我都放到了GITHUB上傳送,可以自己下載去學習,有什麼好的建議或者問題,可以留言或者加我的QQ群:455478219討論。