pycharm终端运行pytest和使用pytest.main()运行结果不同

我有一个conftest.py如下,用来获取–env filepath 中的

from configparser import ConfigParser
import pytest

def pytest_addoption(parser):
    parser.addoption("--env", action="store", help="choose env: test,beta,prod")
    parser.addini('env', help="choose env: test,beta,prod")


@pytest.fixture(scope='session')
def env_vars(request):
    cur_env = request.config.getoption('--env')
    print(cur_env)
    inifile = request.config.inifile
    conf = ConfigParser()
    conf.read(inifile)
    variables = {}
    if conf.has_section('global'):
        variables.update(conf.items('global'))
    if conf.has_section(cur_env):
        variables.update(conf.items(cur_env))
    return variables

执行用例

    def test_app(self, env_vars):
        print(env_vars)

使用pycharm命令行执行,pytest -s -v .\TestUpgrade.py --env E:\pythonProject\HtekDailyTest\TestTask\task001\DUT1
用例成功

但是使用

if __name__ == '__main__':
    pytest.main(['-s','-v','.\\TestUpgrade.py','--env E:\\pythonProject\\HtekDailyTest\\TestTask\\task001\\DUT1'])

就会报错
image
我用debug走了一下发现request.config.getoption(’–env’) 并没有取到东西 返回了NoneType

这是怎么回事?预先格式化的文本

request.config.getoption 是从命令行获取参数,你没传递参数呀,你可以点击右上交进行设置

使用 pytest.main([’-s’,’-v’,’.\TestUpgrade.py’,’–env E:\pythonProject\HtekDailyTest\TestTask\task001\DUT1’]) 这样子传入–env 不可以么?