pytest接口自動化快速設置接口全局host


版本:

python == 3.6.0 ; pytest == 5.4.2;

一、所需場景:

  1、被測試環境host地址發生改變,其他的都不變,不想打開代碼就把host地址修改掉;

  2、被測試環境host地址發生改變,其他的也有地方有所修改,需要打開代碼修改;

需要實現一種滿足以上兩種使用場景的需求,我的實現思路:

  —— 不想打開代碼的時候,直接在命令行執行用例的時候修改全局的host地址,

  —— 需要打開代碼的時候,就直接在代碼中修改host地址,直接執行用例了。不需要再回到命令行,同時還不影響默認配置。

二、實現過程:

1、在代碼中加入可以通過命令行修改host的全局配置,在項目目錄下新建 conftest.py文件(名稱命名固定),寫入代碼如下:

# __*__coding:utf-8 __*__

import pytest import os # 配置全局host地址 # 添加命令行參數.parser是內置 fixture # 只需要切換host地址,不用打開代碼時,直接在命令行執行用例時使用
def pytest_addoption(parser): '''配置全局默認host地址''' parser.addoption( "--cmdhost", action="store", default="http://127.0.0.1:18000", help="My option: host1 or host2") @pytest.fixture(scope="session", autouse=True) def host(request): '''讀取設置的全局host地址''' os.environ["host"] = request.config.getoption("--cmdhost")

此時,只需在每個接口的url中引入:os.environ["host"] 即可獲取到當前環境變量中的默認地址 default="http://127.0.0.1:18000";

如果不需要修改host地址,使用設置的默認地址,直接進入項目目錄執行 pytest即可執行所有用例:

如需修改,只需要在命令行執行的時候修改即可,修改方式如下:

 以上解決了第一個痛點。

接下來解決第二個:

新建config目錄,在目錄中新建host文件,文件中寫入需要修改的地址,如下:

# __*__coding:utf-8 __*__

import os def WmsHost(): '''寫入需要修改的host地址,直接在編輯器中執行用例,不需要在打開命令行''' WMSHost = ""
    # WMSHost = "http://127.0.0.9:180001"
    return WMSHost

這里設置host默認為空。

這里也設置了一個默認地址,剛才的config.py中也設置了一個默認地址,兩個咋兼容起來呢?

用如下方式:

# __*__coding:utf-8 __*__

import os def WmsHost(): '''寫入需要修改的host地址,直接在編輯器中執行用例,不需要在打開命令行''' WMSHost = ""
    # WMSHost = "http://127.0.0.9:180001"
    return WMSHost def obtion_host(): host1 = WmsHost() host2 = os.environ["host"] if host1=="": return host2 else: return host1

當  WMSHost 默認不為空的時候,肯定是有專門來修改過,自然就需要用這個了,否則就是需要用環境變量中的默認的。

最后再需要用和這個host的地方直接調用這個 obtion_host() 函數即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM