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")

 

 

参考链接:

 

posted @ 2022-05-25 18:04  77工作室  阅读(623)  评论(0编辑  收藏  举报