文章目錄
- 一、如何開展自動化測試
- 1、項目需求分析,了解業務需求 web 功能納入自動化測試
- 2、選擇何種方式實現自動化測試
- 二、Unittest 框架
- 三、TestCase 測試用例
- 四、TestFixture 測試夾具 執行測試用例前的前置操作及后置操作
- 五、TestSuite 測試套件 & TestLoader 用例加載器
- 1、TestSuite 測試套件
- 2、TestLoader 用例加載器-用例集
- 六、TestRunner 測試運行器 執行用例,輸出測試結果
- 1、用例執行結果狀態:
- 2、unittest 提供生產測試報告的模塊 TextTestRunner 生成文本格式測試報告
一、如何開展自動化測試
1、項目需求分析,了解業務需求 web 功能納入自動化測試
web 功能:
- 1、新功能 手工測試
- 2、老功能 回歸 冒煙用例 納入自動化測試
2、選擇何種方式實現自動化測試
- 1、工具 robotframework
- 2、獨立搭建 web 自動化測試框架
- 3、編寫自動化測試用例
一邊寫用例,一邊調試用例腳本(用例編輯/封裝/測試數據/腳本調試)
結合jenkins進行持續集成 - 4、執行自動化測試用例
- 1、定時執行、一鍵式執行
- 2、執行策略
執行頻率?—回歸頻率、轉測試、上線前、
自動化測試執行環境----集成測試環境、預發布環境
- 5、測試報告
測試結果的匯總 - 6、維護腳本、優化框架
企業自動化測試崗位:- 1、業務自動化測試 項目自動化測試框架已經構建了 工作內容: 維護框架+用例編輯
- 2、平臺自動化測試開發 參與自動測試框架構建與設計、+維護框架+用例編輯
二、Unittest 框架
Unittest 框架:框架=測試模塊+測試管理模塊+測試統計模塊,python 的內置模塊
import unittest
Unittest 框架四大組件:
- 1、TestCase 測試用例
- 2、TestFixture
- 3、TestSuite
- 4、TestRunner
三、TestCase 測試用例
unittest 中 TestCase 部分的規則:
- 1、用例類必須繼承 Unittest.TestCase,并且以 test 開頭
- 2、每條用例,都必須以 test 開頭
- 3、用例執行的順序按照 ASCII:0-9 a-z A-Z 順序來執行用例
unittest也可以通過命令運行:
- 命令執行 TestShopnc 類下的所有用例: python -m unittest 用例文件名.用例類
- 執行某一條用例: python -m unittest 用例文件名.用例類.用例名稱
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
四、TestFixture 測試夾具 執行測試用例前的前置操作及后置操作
Web 自動化:的前置操作及后置操作
class TestShop(unittest.TestCase):# 前置操作def setUp(self):# 加載項目print("setUp 執行每條用例前都會執行函數代碼,有 n 條用例,則會執行 n 次")@ classmethoddef setUpClass(cls):# 前置操作:連接數據,打開瀏覽器print("setUpClass 執行用例前會執行 ,總共只執行一次")# 后置操作def tearDown(self) -> None:# 后置操作:瀏覽器的關閉print("tearDown執行完每條用例前都會執行代碼,有n條用例,則會執行n次")@ classmethoddef tearDownClass(cls) -> None:# 退出瀏覽器,關閉數據庫連接,清理數據print("tearDownClass執行完所有用例之后會執行代碼 ,總共只執行一次")
五、TestSuite 測試套件 & TestLoader 用例加載器
TestSuite 測試套件 & TestLoader 用例加載器:把需要執行的用例匯總到一起
1、TestSuite 測試套件
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 添加一個用例suite.addTest(TestShop('test01_login'))suite.addTest(TestShop('test02_select_goods'))# 添加多個用例case_list = [TestShop('test03_into_cart'),TestShop('test04_pay_goods')]suite.addTests(case_list)# 執行 main 函數unittest.main(defaultTest="suite")
2、TestLoader 用例加載器-用例集
import unittest
class TestShop(unittest.TestCase):def test01_login(self):print("用例01")def test02_select_goods(self):print("用例02")def test03_into_cart(self):print("用例03")def test04_pay_goods(self):print("用例04")
if __name__ == '__main__':suite = unittest.TestSuite()# 用例加載器# 用例 TestLoader() suite# loadTestsFromTestCase 加載某個用例類(繼承TestCase)下的所有用例# testcases = unittest.TestLoader().loadTestsFromTestCase(TestShop)# 利用默認加載器實現加載用例testcases = unittest.defaultTestLoader.discover('F:\Pycharm\TestShop\TestCase',pattern='test*.py')suite.addTests(testcases)unittest.main(defaultTest="suite")
六、TestRunner 測試運行器 執行用例,輸出測試結果
1、用例執行結果狀態:
- 用例執行成功
- E 用例有異常
- F 用例執行失敗(斷言失敗)
2、unittest 提供生產測試報告的模塊 TextTestRunner 生成文本格式測試報告
import unittest
from TestReport.testcase_01 import TestCase01
# 加載用例
testcases = unittest.TestLoader().loadTestsFromTestCase(TestCase01)
# 執行用例,生產對應的測試報告TextTestRunner
with open('F:/Pycharm/TestShop/TestReport/report.txt','w+') as f:# 文件寫入測試結果unittest.TextTestRunner(verbosity=2,stream=f).run(testcases)