松勤軟體自動化測試
創建介面測試用例,/home/csg/pyrequest-master/interface/add_event_test.py
對上述代碼進行分析:
1、在介面測試之前,調用test_data.py文件中的init_data()方法,初始化資料庫中的測試數據;
2、創建AddEventTest測試類,繼承unittest.TestCase類;
3、創建測試用例,調用添加發布會介面,並驗證介面返回的數據;
注意:
1、把JSON格式的結果轉化為字典賦值給self.result變數,加self的目的是在tearDown()方法中列印self.result變數,列印的結果可以在測試報告中顯示,即將介面返回數據列印出來;
2、如果不使用self,又想在報告中顯示每個介面返回數據,就只能是在每個用例中print出result,相比來說,還是第一種方法比較方便。
集成測試報告
當用例數量較多,就需要分類管理和執行,為解決這個問題,unittest單元測試框架提供了discover()方法,然後再適用HTMLTestRunner生成HTML格式的測試報告。
創建/home/csg/pyrequest-master/interface/run_tests.py文件:
對上述代碼進行分析:
1、還是先調用test_data.py文件中的init_data()函數來初始化測試數據;
2、unittest框架提供的discover()方法查找interface目錄下,匹配到文件名*_test.py結尾的測試文件;
3、now按一定格式生成當前時間;
4、將文件名命名為now當前時間_result.html並且保存report目錄下;
5、HTMLTestRunner為unittest單元測試框架的擴展,利用它提供的HTMLTestRunner()類來代替unittest單元測試框架的TextTestRunner()類,運行discover中匹配到的測試用例,生成HTML格式的測試報告;
運行測試腳本:python run_tests.py:
1、可能需要安裝configparser庫,pip install configparser;
2、在運行過程中,出現了錯誤:
應該是數據表裡create_time欄位需要一個默認值,於是修改test_data.py文件,給每個測試數據都增加create_time默認值為當前時間,再次運行就沒有這個錯誤了;
3、但是繼續執行又出現了錯誤:
問了下度娘,應該是讀取文件的時候使用的是ASCII編碼,而不是utf-8,自己多餘,在每個測試用例的開頭都增加了-*- coding:utf-8 -*-,畫蛇添足了,去掉後再次運行就沒這個錯誤了;
4. 但是運行結果全部是failed的,查看具體的error信息:
原來還是要在每個測試數據前加上utf-8編碼的聲明,但是每個用例的注釋信息不能是中文,奇怪了,沒深入研究,反正都修改為英文後,再次運行成功了。
完整的自動化測試報告如下圖所示:
總結
其實,作者自己完全的封裝了一個類似Robot的工具,這個好處是拋開了框架的束縛,可以自由的編寫測試用例的內容,只要是python的代碼,就可以採用這個工具,自由發揮測試內容,並且結果的展示也比較豐富和友好,如果不打算研究Robot的,其實可以用這個工具。
特別鳴謝:原創作者蟲師
TAG:松勤軟體學院 |