1. 程式人生 > 其它 >pytest_addoption : 命令列引數

pytest_addoption : 命令列引數

場景
1.一般公司測試環境都有多套,測試的時候我們需要在不同的環境下進行
2.在自動化執行時,在不同的環境下我們要指定不同的系統配置,每次修改框架程式碼配置這個很不自動化
3.pytest_addoption註冊引數 這個就很好的解決了這個問題,它能在執行命令的時候傳遞引數

基本用法

#conftest.py
# 註冊自定義引數num到配置物件
def pytest_addoption(parser):
    parser.addoption(
        "--num_1", action="store", default='0', help="my option: 說明"
    )
    parser.addoption(
        "--num_2", action="store", default='0', help="my option: 說明"
    )


# 從配置物件獲取值
@pytest.fixture(scope='session', autouse=True)
def num_1(request):
    return request.config.getoption("--num_1")


@pytest.fixture(scope='session', autouse=True)
def num_2(request):
    return request.config.getoption("--num_2")

#test_02.py
def test_run(num_1, num_2):
    print(num_1)
    print(num_2)

#不帶引數執行
test_02.py::test_run PASSED                                              num_1:  0
num_2:  0
=== 1 passed in 0.05s 

#帶引數執行:pytest -s -v test_02.py --num_1=11 --num_2=22
test_02.py::test_run 
num_1:  11
num_2:  22
PASSED
=== 1 passed in 0.06s

引數含義
name:自定義命令列引數的名字,可以是:"foo", "-foo" 或 "--foo";
action:在命令列中遇到此引數時要採取的基本操作型別;
nargs:應該使用的命令列引數的數量;
const:某些操作和nargs選擇所需的常量值;
default:如果引數不在命令列中,則生成的預設值。
type:命令列引數應該轉換為的型別;
choices:引數允許值的容器;
help:對引數作用的簡要說明;