前言
pytestconfig 是pytest框架的一个内置fixture函数,可以获取上下文,它的作用跟 request.config 是一样的,代表pytest配置对象。
pytestconfig的源代码
从源代码中可以看到: pytestconfig fixture函数实际上的返回值为 request.config 即返回pytest配置对象。【在程序中可以通过配置对象的】
@fixture(scope="session")
def pytestconfig(request: FixtureRequest) -> Config:
    """Session-scoped fixture that returns the :class:`_pytest.config.Config` object.
    Example::
        def test_foo(pytestconfig):
            if pytestconfig.getoption("verbose") > 0:
                ...
    """
    return request.config源代码实例:
def test_foo(pytestconfig):
            if pytestconfig.getoption("verbose") > 0:pytestconfig fixture函数中有2个比较常用的方法:
① pytestconfig.getoption 获取命令行参数(对应的参数值):【不但可以获取pytest框架中自带的命令行参数值,也可以获取用户注册的自定义参数值】
参考博客:pytest系列——pytest_addoption钩子函数添加自定义参数到pytest配置对象中+request.config.getoption获取参数值
conftest.py
import pytest
def pytest_addoption(parser):
    parser.addoption(
        "--cmdopt",
        action="store",
        default="默认参数值",
        help="my option: type1 or type2"
    )
@pytest.fixture()
def cmdopt(pytestconfig):
    return pytestconfig.getoption("--cmdopt")test_a.py
import pytest
def test_cmd_1(cmdopt):  # 通过conftest.py文件中定义的fixture函数来获取自定义参数值,但是定义的fixture函数中原理依旧是调用了pytest内置fixture函数pytestconfig
    print("test_cmd_1当前获取的参数为:{}".format(cmdopt))
def test_cmd_2(request):  
    cmdopt = request.config.getoption("cmdopt") # 直接通过调用pytest内置fixture函数request获取自定义参数值
    print("test_cmd_2当前获取的参数为:{}".format(cmdopt))
def test_cmd_3(pytestconfig):
    cmdopt = pytestconfig.getoption("cmdopt")   # 直接通过调用pytest内置fixture函数pytestconfig获取自定义参数值
    print("test_cmd_3当前获取的参数为:{}".format(cmdopt))
if __name__ == '__main__':
    pytest.main(['-s', '--cmdopt=98k'])pytest命令行参数方式执行命令:
pytest -s --cmdopt=因为我是中国人,所以我爱中国运行结果:

② pytestconfig.addini 动态添加pytest.ini配置文件中的参数
1、在添加自定义参数到pytest配置对象中:在conftest.py文件中通过钩子函数 pytest_addoption 中使用 addoption 方法来添加自定义命令行参数。
2、在conftest.py文件中通过钩子函数 pytest_addoption 中使用 addini 方法来添加pytest.ini配置文件中的参数。
addini 方法源代码:
参数:
- name:添加到pytest.ini配置文件中的参数名;
- help:对参数名的帮助说明,方便查阅;
- type:参数类型,默认None,可以设置:None, "pathlist", "args", "linelist", "bool";
- default:参数默认值;
def addini(self, name, help, type=None, default=None):
        """ register an ini-file option.
        :name: name of the ini-variable
        :type: type of the variable, can be ``pathlist``, ``args``, ``linelist``
               or ``bool``.
        :default: default value if no ini-file option exists but is queried.
        The value of ini-variables can be retrieved via a call to
        :py:func:`config.getini(name) <_pytest.config.Config.getini>`.
        """
        assert type in (None, "pathlist", "args", "linelist", "bool")
        self._inidict[name] = (help, type, default)
        self._ininames.append(name)实例:
contest.py
import pytest
def pytest_addoption(parser):
    # 添加配置参数
    parser.addini(
        "base_url",
        type=None,
        default="http://www.lwjnicole.com",
        help="添加base_url配置参数"
    )
@pytest.fixture()
def base_url(pytestconfig):
    return pytestconfig.getini("base_url")test_a.py:
def test_base_url(base_url):
    print("当前获取到的base_url = {}".format(base_url))pytest命令行参数方式执行:
pytest -s运行结果:

③ pytestconfig.getini() 获取pytest.ini配置文件中的配置参数
 
pytest.ini

test_a.py
import pytest
def test_get_ini(pytestconfig):
    log_cli = pytestconfig.getini("log_cli")
    print("\n获取到的log_cli = {}".format(log_cli))
    xfail_strict = pytestconfig.getini("xfail_strict")
    print("\n获取到的xfail_strict = {}".format(xfail_strict))
    addopts = pytestconfig.getini("addopts")
    print("\n获取到的addopts = {}".format(addopts))
if __name__ == '__main__':
    pytest.main(['-s', 'test_option.py'])pytest命令行方式执行命令:
pytest -s运行结果:

我这里给你们分享一下我所积累和真理的文档和学习资料有需要是领取就可以了
1、学习思路和方法
这个大纲涵盖了目前市面上企业百分之99的技术,这个大纲很详细的写了你该学习什么内容,企业会用到什么内容。总共十个专题足够你学习

2、想学习却无从下手,该如何学习?
这里我准备了对应上面的每个知识点的学习资料、可以自学神器,已经项目练手。


3、软件测试/自动化测试【全家桶装】学习中的工具、安装包、插件....



4、有了安装包和学习资料,没有项目实战怎么办,我这里都已经准备好了往下看

最后送上一句话:
 世界的模样取决于你凝视它的目光,自己的价值取决于你的追求和心态,一切美好的愿望,不在等待中拥有,而是在奋斗中争取。
如果我的博客对你有帮助、如果你喜欢我的文章内容,请 “点赞” “评论” “收藏” 一键三连哦!

 
                   
                   
                   
                   
                             本文详细介绍了pytest内置fixture函数pytestconfig,包括其在获取命令行参数、动态添加pytest.ini配置参数的功能,并通过实例展示了如何使用getoption和addini方法。此外,还探讨了学习pytest的思路和资源。
本文详细介绍了pytest内置fixture函数pytestconfig,包括其在获取命令行参数、动态添加pytest.ini配置参数的功能,并通过实例展示了如何使用getoption和addini方法。此外,还探讨了学习pytest的思路和资源。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   475
					475
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            