我试图在将命令放入[testenv] commands =
部分下的tox.ini中之前验证命令。
是否可以通过将自定义命令作为 shell 参数传递给tox
?就像是
tox -e <env_to_run_script_in> <command_which_we_want_to_run_in_specified_env>
我已经尝试了以下方法,但是它们都不起作用。
tox -e py34 args py.test
tox -e py34 -- py.test
tox args "py.test"
如何在没有创建tox.ini的情况下在tox创建的虚拟环境中运行python命令/脚本?
最佳答案
通过在命令说明符中使用带有默认参数的 posargs
,可以将任意命令行传递到底层的virtualenv环境,同时在不传递任何参数的情况下仍运行测试。
使用类似的tox.ini
[tox]
envlist = py27,py35,pypy,pypy3
[testenv]
passenv =
TERM
deps=
pytest
ipython
six
commands={posargs:py.test}
当不带参数调用tox时,它默认为运行
py.test
,否则在命令行上传递的args将发送到指定的virtualenv。在项目的根目录中使用示例
hello.py
import os
import sys
print(os.__file__)
print(sys.version)
print("Hello from env")
通过
tox -e pypy python hello.py
调用tox -e pypy
使用python hello.py
参数启动pypy virtualenv输出:
/Users/seanjensengrey/temp/.tox/pypy/lib-python/2.7/os.pyc
2.7.10 (5f8302b8bf9f53056e40426f10c72151564e5b19, Jan 20 2016, 04:41:02)
[PyPy 4.0.1 with GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)]
Hello from env
我使用
TERM="xterm-256color" tox -e pypy ipython
调用我的安装在virtualenv中的软件包的ipython shell。关于shell - 如何在没有在tox.ini中指定的情况下使用tox运行自定义命令?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34202755/