我试图在将命令放入[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/

10-12 05:57