記一次問題的解決,web自動化用例的管理
阿新 • • 發佈:2020-10-25
一、問題概述:
測試人員習慣於使用手工用例來執行測試任務,手工用例已經使用測試平臺管理。
當前需要開展webUI的自動化測試,本來的想法是在測試平臺擴充套件UI測試的功能,但是在構思的時候,覺得它沒有直接編寫python指令碼來的便利。
所以後來使用python+selenium+pytest來實現webUI的自動化測試。**一段時候後發現部分測試人員不知道哪些功能已經實現的webUI自動化測試,讓他們自己去指令碼中找,顯然是不現實的。**
如果測試平臺中的手工用例和指令碼可以對應起來,這樣當測試人員使用手工用例時,也就很容易知道該手工用例有沒有實現自動化了。
二、需求分析
* 需求:手工用例和自動化指令碼建立對應關係 * 分析與方案:pytest有很多種執行用例的方式,其中有一種用例路徑的執行方式。 比如一條用例的路徑是/testcase/test_case.py::TestCase_類名::test_用例名稱,那麼直接可以使用命令(pytest /testcase/test_case.py::TestCase_類名::test_用例名稱) 來執行。 如果將這個路徑新增到平臺的手工用例中,那麼它們的對應關係就建立了,同時還可以觸發執行自動化用例。
三、實現
- 建立對應關係
在自動化工程中實現一個收集所有自動化用例的Web介面,通過該介面,測試平臺可以給手工用例配置對應的自動化用例路徑,如下兩張圖
- 執行
因為UI用例執行比較耗時,所以這裡就需要使用非同步執行了。可以使用訊息佇列(執行佇列和結果佇列)的方式,來實現非同步執行。
因為執行請求和執行結果,在兩個佇列中,所以需要使用一個execid來給它們建立關係。也就是要在原來的執行命令中,新增一個引數execid,例如pytest /testcase/test_case.py::TestCase_類名::test_用例名稱 --execid 1234455。
這裡我在conftest.py檔案中實現了兩個pytest的鉤子函式pytest_addoption和pytest_collection_modifyitems,通過兩個鉤子函式,可以將命令中的execid儲存到config物件中,並提供給執行結果。
- 收集執行結果
當用例執行完成後,使用鉤子函式pytest_report_teststatus(也是conftest.py檔案中實現),可以拿到執行結果(包括execid),並寫入到結果佇列,測試平臺拿到結果後,就是可以形成一條完整的執行記錄,並在手工用例中展示。