轉載請表明出處:https://www.cnblogs.com/shapeL/p/9179484.html
簡單介紹框架的實現邏輯,參考代碼的git地址:
https://github.com/zhangying123456/python_unittest_interface
1.環境准備
python3 + pycharm編輯器
2.框架目錄展示
(該套代碼只是簡單入門,有興趣的可以不斷后期完善)

(1)run.py主運行文件,運行之后可以生成相應的測試報告,並以郵件形式發送;
(2)report文件夾存放測試結果報告;
(3)unit_test文件夾是存放測試用例(demo.py和test_unittest.py用例用法介紹,實際項目中可以按照不同模塊新建python package,來存放不同模塊的接口用例);
(4)util對測試接口相關方法的封裝:HTMLTestRunner.py生成測試報告的封裝;send_mail.py發送郵件的封裝;test_get_post.py接口請求類型的封裝。
3.代碼實現說明
(1)get、post接口請求實例介紹
【1】requests.get()、requests.post()用法可以參考文檔:https://www.cnblogs.com/shapeL/p/9037035.html
【2】請求之后對返回結果進行斷言:assertEqual()等,斷言方法很多,可上網查詢

(2)實際中,有些參數或方法在執行用例之前必須說明,這就涉及到setUp、tearDown、setUpClass、tearDownClass的用法
【1】setup():每個測試函數運行前運行;teardown():每個測試函數運行完后執行;setUpClass():必須使用@classmethod 裝飾器,所有test運行前運行一次;tearDownClass():必須使用@classmethod裝飾器,所有test運行完后運行一次
【2】也可以對某些用例執行過程中跳過:unittest.skip(),具體使用方法可上網查詢

(3)如果每次接口請求時都使用requests/get、post請求實在是繁瑣,我們可以對該方法進行封裝,接口請求時直接調用即可

(4)測試用例編寫完之后,主函數run.py直接使用unittest模塊將所有用例一並執行
【1】unittest模塊:TestSuite 多個測試用例集合在一起;TestRunner 是來執行測試用例的,測試的結果會保存到TestResult實例中,包括運行了多少測試用例,成功了多少,失敗了多少等信息(unittest.TextTestRunner().run(suite))
【2】suite.addTests()和suite.addTest()均可實現
# 2種用法:第一種suite.addTest() suite.addTest(Case('test_case01')) suite.addTest(Case('test_case02')) suite.addTest(Test('test_01')) suite.addTest(Test('test_02')) #2種用法:第二種suite.addTests() suite.addTests(map(Test, ["test_01", "test_02"])) suite.addTests(map(Case, ["test_case01", "test_case02"]))
【3】TestRunner測試結果輸出到控制台,要將測試結果輸出到report中,使用HTMLTestRunner.py文件(該文件參考地址:https://github.com/huilansame/HTMLTestRunner_PY3)

(5)測試完成之后,想要將測試結果發送郵件給相關人員
發送郵件具體實現方法,參考文檔:https://www.cnblogs.com/shapeL/p/9115887.html

說明:
1.代碼中涉及到的測試數據都屏蔽掉了,可以直接使用自己負責項目的真實數據進行了解;
2.該套測試腳本相對基礎,需要完善的地方還要很多,歡迎各位學習交流;
3.后續會再寫一篇博客接口自動化測試(二),實現Excel來管理用例等。
