第八篇:【自動化測試框架】| 斷言
來自專欄軟體測試精選
然後添加了一個簡單的自定義斷言,在utils中添加assertion.py,可用同樣的方法自行擴展。
上次我們的用例中增加了斷言。斷言(檢查點)這個東西對測試來說很重要。不然你怎麼知道一個測試結果是對是錯呢。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 unittestfrom utils.config import Config, REPORT_PATHfrom utils.client import HTTPClientfrom utils.log import loggerfrom utils.HTMLTestRunner import HTMLTestRunnerfrom utils.assertion import assertHTTPCodeclass 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中你可以添加更多更豐富的斷言,響應斷言、日誌斷言、資料庫斷言等等,請自行封裝。
所有的代碼我都放到了公眾號,可以自己下載去學習,有什麼好的建議或者問題,可以留言或者加我的 QQ 群:330374464 討論。
推薦閱讀:
※工控人可發揮的作用和不可替代價值,第四次工業革命孰主沉浮(中)
※一點濕貨 -- EtherCAT同步管理器
※SLAM系統全自動化 | SLAM: 現在,未來和魯棒年代(三)第一部分
※推薦《自動化機構設計工程師速成寶典》(實戰篇)
※PLC系統一些實用的檢測和維護知識