Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pytest键错误:';用户';在docker容器内_Python_Docker_Pytest - Fatal编程技术网

Python pytest键错误:';用户';在docker容器内

Python pytest键错误:';用户';在docker容器内,python,docker,pytest,Python,Docker,Pytest,我正在构建一个docker容器来运行我的自动化测试。当我尝试运行下面的命令[这在本地和jenkins中有效]时,我得到以下错误: root@645ed3930434:/test_dir# pytest test_* -m smoke Traceback (most recent call last): File "/usr/local/bin/pytest", line 11, in <module> sys.exit(main()) File "/usr/local

我正在构建一个docker容器来运行我的自动化测试。当我尝试运行下面的命令[这在本地和jenkins中有效]时,我得到以下错误:

root@645ed3930434:/test_dir# pytest test_* -m smoke
Traceback (most recent call last):
  File "/usr/local/bin/pytest", line 11, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 49, in main
    config = _prepareconfig(args, plugins)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 168, in _prepareconfig
    pluginmanager=pluginmanager, args=args)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 745, in __call__
    return self._hookexec(self, self._nonwrappers + self._wrappers, kwargs)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 613, in execute
    return _wrapped_call(hook_impl.function(*args), self.execute)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 250, in _wrapped_call
    wrap_controller.send(call_outcome)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/helpconfig.py", line 68, in pytest_cmdline_parse
    config = outcome.get_result()
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 279, in get_result
    raise ex[1].with_traceback(ex[2])
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 265, in __init__
    self.result = func()
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 957, in pytest_cmdline_parse
    self.parse(args)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 1121, in parse
    self._preparse(args, addopts=addopts)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 1084, in _preparse
    self.pluginmanager.load_setuptools_entrypoints('pytest11')
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 516, in load_setuptools_entrypoints
    self.register(plugin, name=ep.name)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/config.py", line 264, in register
    ret = super(PytestPluginManager, self).register(plugin, name)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 371, in register
    hook._maybe_apply_history(hookimpl)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 768, in _maybe_apply_history
    res = self._hookexec(self, [method], kwargs)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 339, in _hookexec
    return self._inner_hookexec(hook, methods, kwargs)
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 334, in <lambda>
    _MultiCall(methods, kwargs, hook.spec_opts).execute()
  File "/usr/local/lib/python3.5/dist-packages/_pytest/vendored_packages/pluggy.py", line 614, in execute
    res = hook_impl.function(*args)
  File "/usr/local/lib/python3.5/dist-packages/pytest_cloud/plugin.py", line 76, in pytest_addoption
    os.environ['USER'],
  File "/usr/lib/python3.5/os.py", line 725, in __getitem__
    raise KeyError(key) from None
KeyError: 'USER'

我已经在容器中安装了Python 3.5.2,

您的映像中似乎没有定义“USER”环境变量。从外部定义它,或使您的代码适应它的缺失:

  • 在代码中,使用
    os.getenv('USER',backup\u USER\u name)
    而不是
    os.environ['USER']
  • 在代码中,而不是依赖您的环境来获取当前用户
导入getpass
打印getpass.getuser()
  • docker run
    中,您可以添加
    -e USER=$(whoami)
    或类似的内容
  • docker compose
    中,您可以在该服务的
    环境设置下添加
    USER:some\u USER\u name

更新:我也可以在容器中复制。谢谢!这就是问题所在。我很感谢你的帮助。从一开始就省去了很多步骤,这也毫无价值。现在运行'docker run-e USER=$(whoami)-it python bash'正在工作。在创建实际的dockerfile时,我将对此进行清理。
apipkg==1.4
certifi==2017.11.5
chardet==3.0.4
execnet==1.5.0
idna==2.6
parameterized==0.6.1
psutil==5.4.1
py==1.5.2
pytest==3.2.5
pytest-cloud==2.0.0
pytest-forked==0.2
pytest-xdist==1.20.1
requests==2.18.4
six==1.11.0
timeout-decorator==0.4.0
urllib3==1.22