
今日分享主題:Python + Pytest 自動化框架中測驗用例依賴的探索與實踐,今天分享的內容以“依賴別名+scope=’package’”進行演示,
1、安裝 pytest-dependency
安裝命令:pip install pytest-dependency,它是一個 pytest 第三方插件,主要解決用例之間的依賴關系,
2、dependency 可作用的范圍說明
(1).session:作用于全域,可跨目錄呼叫,但被依賴的用例必須先執行,否則用例會執行跳過,
(2).package:作用于當前目錄同級的依賴函式,跨目錄無法找到依賴的函式,
(3).module:不傳遞scope,默認引數是’module’,作用于當前檔案,只會查找當前檔案的符合條件的檔案名,類里同名的方法不會被依賴,
(4).class:作用于所屬的類,外部類不會被關聯,
3、使用步驟
(1).首先,需要在用例開始的位置打上一個裝飾器@pytest.mark.dependency(),這是代表這條用例作為主條件,如果這條用例失敗,關聯它的用例會跳過執行,
(2).在被關聯的用例上,也打上帶引數的裝飾器@pytest.mark.dependency(),depends 接受的引數是關聯的依賴用例名,
(3).在 depends 也可以用別名的方式指定用例名,
4、代碼演示
test_dep_01.py:這是一個被依賴的檔案,用來做權限檢查的(這是我模擬的一個本地的 ip 訪問校驗使用的)
#test_dep_01.py檔案內容如下:
import pytestfrom commons.HandleJson import handle_jsonimport commons.configs as configfrom commons.log import loggerfrom commons.HandleCompare import compareTestfrom commons.ApiRequest import apiRequestbaseFileName = '…/…/testdata/check_premission_data.json’testCaseData = handle_json.load_json(baseFileName)classTestDep1(): @pytest.mark.dependency(name=‘testUserCheck’) @pytest.mark.parametrize(‘case_data’, testCaseData[‘testcase’])deftestUserCheck(self, case_data): api_response = apiRequest.api_request(config.apiurl, testCaseData, case_data)for case_validate in case_data[‘validate’]: logger.info(‘斷言期望相關引數:check:{},comparator:{},expect:{}’.format(case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])) compareTest.compare_Assert(api_response, case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])
check_premission_data.json:用例資料檔案只有1條用例,如下所示:

test_dep_02.py:這個是依賴上面的代碼內容,邏輯是當前面的檢查校驗通過后,才可以允許做登錄,
#test_dep_02.py檔案內容如下:
import pytestfrom commons.HandleJson import handle_jsonimport commons.configs as configfrom commons.log import loggerfrom commons.HandleCompare import compareTestfrom commons.ApiRequest import apiRequestbaseFileName = ‘…/…/testdata/post_user_login_data.json’testCaseData = handle_json.load_json(baseFileName)classTestDep2(): @pytest.mark.dependency(depends=[“testUserCheck”], scope=‘package’) @pytest.mark.parametrize(‘case_data’, testCaseData[‘testcase’])deftestUserLogin(self, case_data): api_response = apiRequest.api_request(config.apiurl, testCaseData, case_data)for case_validate in case_data[‘validate’]: logger.info(‘斷言期望相關引數:check:{},comparator:{},expect:{}’.format(case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])) compareTest.compare_Assert(api_response, case_validate[‘check’], case_validate[‘comparator’],case_validate[‘expect’])if name == ‘main’: pytest.main([’-sv’])
post_user_login_data.json:用例資料檔案一共有4條用例,如下所示:

5、執行test_dep_02.py檔案結果如下

總結:
今天分享的是 Python + Pytest 框架中的用例依賴關系及使用,后續會持續整理分享演示的代碼并將其以測驗資料的文章的共享形式供大家查閱與獲取,
最后:如果對軟體測驗、介面測驗、自動化測驗、技術同行、持續集成、面試經驗交流,感興趣可以進到 902061117,群內會有不定期的分享測驗資料,
如果文章對你有幫助,麻煩伸出發財小手點個贊,感謝您的支持,你的點贊是我持續更新的動力,
好文推薦
2021軟體測驗工程師面試題匯總(內含答案)-看完BATJ面試官對你豎起大拇指!
什么樣的人適合從事軟體測驗作業?
軟體測驗和軟體開發哪個發展更好
那個準點下班的人,比我先升職了…

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294410.html
標籤:其他
