大部分公司都有多套測試環境,sit/uat...。自動化用例如何做到多套測試環境自由切換執行
方法1、注冊命令行參數,通過命令行參數來指定測試環境
pytest中有一個request的內置fixture,具有可選的param屬性,為請求的對象提供請求上下文的訪問權。在conftest.py文件中寫一個hook函數,通過addoption來注冊一個新的命令行參數host
addoption里面的參數。parser.addoption('命令行參數', default='默認執行環境', help='幫助信息')。action參數默認為'store'
import pytest def pytest_addoption(parser): # 注冊命令行參數 parser.addoption( "--host", action='store', default='https://baidu.com/', help='環境切換 switch environment' ) @pytest.fixture(scope='function') def host(request): # 通過request.config來獲取host信息 h = request.config.getoption('--host') return h
--測試:
當在終端運行時指定了host的時候,用例里面會默認運行指定的host地址
pytest test_aa.py --host='https://cnblogs.com' -s
當在終端運行沒有指定host地址的時候,用例執行使用默認地址
該方法的解決思路:在conftest里面注冊新的命令行參數,再寫一個fixture,通過request.config.getoption('獲取新增的命令行參數'),再return。能實現有多套測試環境的時候,指定host地址即可切換。
方法2、通過安裝pytest-base-url插件,使用pytest.ini配置文件來實現
pip install pytest-base-url
該插件實際就是一個內置的base_url fixture。通過新建pytest.ini文件,配置base_url即可實現環境切換
--測試:
方法2,只需要安裝pytest-base-url插件,新建pytest.ini文件。在里面聲明base_url地址,右擊run即可
當環境地址發生改變后,直接改pytest.ini的base_url地址即可