1. 程式人生 > 其它 >Python-pytest -> 在自動化測試中,如何切換不同的測試環境

Python-pytest -> 在自動化測試中,如何切換不同的測試環境

       在構建自動化測試的指令碼時候,我們可能會有不同環境的測試需求,如何實現在不同的測試環境之間切換呢?接下來介紹的這種方法,可以自定義命令列引數,從而根據不同的引數值實現不同環境的切換。

解決辦法:

使用hook 鉤子函式之addoption:

step1: 在專案的根目錄下,建立conftest.py檔案(名字是指定的,不要改動)

step2: 在此檔案中,定義pytest_addoption方法,定義的內容參考如下:

import pytest

# Register argparse-style options and ini-style config values, called once at the beginning of a test run.
def pytest_addoption(parser):
    parser.addoption(
        "--name",
        action="store",
        default="Test name",
        help="default value for argument name",
    )

引數說明:

  • name:自定義命令列引數的名字,可以是:"xx", "-xx" 或 "--xx"
  • action:在命令列中遇到此引數時要採取的基本操作型別
    • - store:預設,只儲存引數的值,可以儲存任何型別的值,此時 default 也可以是任何型別的值,而且命令列引數多次使用也只能生效一個,最後一個值覆蓋之前的值
    • - append:儲存一個列表,用 append 模式將可以同時多次使用自定義引數,並且 default  預設值必須是一個列表,pytest 會把 default  預設引數的值和多個自定義引數的值放在一個列表中
    • - store_const:用 const 為命令列引數指定一個常量值,必須和 const 引數同時使用,使用這個模式後命令行引數不能賦值
  • default:如果引數的值不在命令列中,則使用預設值
  • help:對引數作用的簡要說明

  【注】: 其他的引數可以詳細參考第一個連結

step3: 定義方法以獲取自定義引數的值:

# 使用request.config.getoption("--命令列")獲取命令列引數的值
@pytest.fixture(scope="session")
def get_env(request):
    """從配置物件中讀取自定義引數的值"""
    return request.config.getoption("--name")

  【注】: 通過 request.config.getoption("--env_opt") 來獲取引數名為"--env_opt"的引數值。(可寫在一個方法裡,全域性呼叫就可以獲取到)

step4:  全域性呼叫get_env方法,可以直接獲取到自定以引數的值。

  【注】: 如果想要新增不同的自定義引數,可以在之前定義的pytest_addoption方法中,繼續新增,比如:

import pytest

def pytest_addoption(parser):
    parser.addoption(
        "--name",
        action="store",
        default="Test name",
        help="default value for argument name",
    )
    parser.addoption(
        "--env_opt",
        action="store",
        default="dev",
        help="default value for the current running environment",
    )

@pytest.fixture(scope="session")
def get_env(request):
    """從配置物件中讀取自定義引數的值"""
    return request.config.getoption("--name")

@pytest.fixture(scope="session")
def get_env(request):
    """從配置物件中讀取自定義引數的值"""
    return request.config.getoption("--env_opt")

參考連結: