怎樣從0開始搭建一個測試框架_8——斷言
阿新 • • 發佈:2019-01-05
怎樣從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討論。