标签: tox

如何创建 tox.ini 变量

有没有办法在 tox.ini 中设置任意变量?

一个例子是可以以多种方式使用的项目名称。使用相当复杂的 tox.ini,我发现自己复制并粘贴到我应该只需要在顶部设置一个变量的地方。

作为参考,示例 tox.ini:

[tox]
envlist = clean, py{27,35,py}, license, style
skipsdist = True
skip_missing_interpreters = True
sitepackages = False

[testenv:clean]
deps = coverage
skip_install = true
commands =
    hash -r
    find {toxinidir} -name '*.pyc' -delete
    find {toxinidir} -name '__pycache__' -delete
    coverage erase
    rm -Rf {toxinidir}/docs/_build {toxinidir}/docs/coverage {toxinidir}/docs/reports

[testenv]
passenv = *
whitelist_externals = *
install_command = {envpython} -m pip install -q --process-dependency-links {opts} {packages}
envdir = {env:WORKON_HOME}/tox-<project_name>/{envname}
sitepackages = False
recreate = True
commands =
    # …
Run Code Online (Sandbox Code Playgroud)

python tox

2
推荐指数
1
解决办法
1547
查看次数

Running a test with tox based on a keyword

I am using pytest with tox. I can run some of my tests with a keyword like this:

pytest -k <keyword> path/to/tests

Now it would be really convenient to be able to do this also with tox, as the environments there are clean and different python versions can be tested. However the nearest thing I have found is:

tox -- path/to/tests/test_very_specific_name.py:TestClass.test_func

This is not easy to type, so I rather just run tox without arguments and wait 2 minutes for …

pytest tox

2
推荐指数
1
解决办法
900
查看次数

Tox:flake8 和 pylint 等工具的每个平台配置

我在 Linux 和 Windows 环境中都有 ci 的 tox.ini 配置,如下所示:

[tox]
envlist =
    {py3,py27}-{test,lint}-{linux,windows}
    flake8
    check-package
skip_missing_interpreters = true
isolated_build = True
distdir = dist

[testenv]
platform =
    linux: linux
    windows: win

# Reuse py3 and py27 envs for pylint
envdir =
    py3: {toxworkdir}/py3
    py27: {toxworkdir}/py27
    !py3-!py27: {toxworkdir}/{envname}
deps =
    py27: setuptools < 45.0.0

# test extras must include pytest and pylint
extras = test
commands =
    test: python -m pytest -c {toxinidir}/pytest.ini --junitxml=test-reports/pytest.{envname}.xml {posargs}
    lint: python -m pylint --rcfile=tox.ini src/displaylink …
Run Code Online (Sandbox Code Playgroud)

python pylint tox flake8

2
推荐指数
1
解决办法
2617
查看次数

如何分析毒性?

我通过 tox 运行一个特定的测试用例:

tox -e myenv foo.tests.test_foo.SomeTestCase
Run Code Online (Sandbox Code Playgroud)

这需要 30 秒。

测试本身非常简单且快速。但在测试开始运行之前似乎发生了很多事情。

我如何跟踪/分析测试运行之前发生的事情?

我想仅分析 tox 不会有帮助,因为 tox 没有多大作用。Tox 会产生耗时过长的子进程。

python profiling tox

2
推荐指数
1
解决办法
243
查看次数

在tox.ini中指定hg依赖项

什么是指定在汞的依赖正确的方法tox.ini.例如

[testenv]
deps =
    hg+https://code.google.com/p/python-progressbar/
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,以下是:

ERROR: invocation failed, logfile: /Users/brad/project/.tox/py33-dj/log/py33-dj-1.log
ERROR: actionid=py33-dj
msg=getenv
cmdargs=[local('/Users/brad/project/.tox/py33-dj/bin/pip'), 'install', '--download-cache=/Users/brad/.pip/downloads', 'hg+https://code.google.com/p/python-progressbar/', 'https://github.com/dag/attest/tarball/master', 'django-attest', 'django-celery', 'coverage', 'https://github.com/django/django/tarball/master']
env={'PYTHONIOENCODING': 'utf_8', 'TERM_PROGRAM_VERSION': '309', 'LOGNAME': 'brad', 'USER': 'brad', 'PATH': '/Users/brad/project/.tox/py33-dj/bin:/usr/local/share/python:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin', 'HOME': '/Users/brad', 'DISPLAY': '/tmp/launch-zayh2U/org.macosforge.xquartz:0', 'TERM_PROGRAM': 'Apple_Terminal', 'LANG': 'en_AU.UTF-8', 'TERM': 'xterm-256color', 'SHLVL': '1', '_': '/usr/local/share/python/tox', 'TERM_SESSION_ID': 'E8FC4113-C18B-4DB4-9594-C0909A132D76', 'SSH_AUTH_SOCK': '/tmp/launch-kia8RP/Listeners', 'SHELL': '/bin/bash', 'TMPDIR': '/var/folders/zr/m_ys6vwd1z19rqh73jd8z88w0000gn/T/', '__CF_USER_TEXT_ENCODING': '0x1F5:0:15', 'PWD': '/Users/brad/project', 'PIP_DOWNLOAD_CACHE': '/Users/brad/.pip/downloads', 'COMMAND_MODE': 'unix2003'}
abort: couldn't find mercurial libraries in [/usr/local/Cellar/mercurial/2.4.1/libexec /Users/brad/project/.tox/py33-dj/lib/python3.3/site-packages/distribute-0.6.31-py3.3.egg /Users/brad/project/.tox/py33-dj/lib/python3.3/site-packages/pip-1.2.1-py3.3.egg /Users/brad/project/.tox/py33-dj/lib/python33.zip /Users/brad/project/.tox/py33-dj/lib/python3.3 /Users/brad/project/.tox/py33-dj/lib/python3.3/plat-darwin /Users/brad/project/.tox/py33-dj/lib/python3.3/lib-dynload /usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib/python3.3 /usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib/python3.3/plat-darwin …
Run Code Online (Sandbox Code Playgroud)

python mercurial tox

1
推荐指数
1
解决办法
1087
查看次数

为什么TravisCI不会找到我的LICENSE文件?

Travis-CI不会构建我的项目,发出此错误:

...
running egg_info
creating myproject.egg-info
writing requirements to myproject.egg-info/requires.txt
writing myproject.egg-info/PKG-INFO
writing top-level names to myproject.egg-info/top_level.txt
writing dependency_links to myproject.egg-info/dependency_links.txt
writing manifest file 'myproject.egg-info/SOURCES.txt'
reading manifest file 'myproject.egg-info/SOURCES.txt'
writing manifest file 'myproject.egg-info/SOURCES.txt'
running build_ext
copying build/lib.linux-x86_64-2.6/myproject/test/unit/hang.so -> myproject/test/unit
GLOB sdist-make: /home/travis/build/myteam/myproject/setup.py
py27 create: /home/travis/build/myteam/myproject/.tox/py27
py27 installdeps: -rrequirements.txt
py27 inst: /home/travis/build/myteam/myproject/.tox/dist/myproject-0.0.1.zip
ERROR: invocation failed, logfile: /home/travis/build/myteam/myproject/.tox/py27/log/py27-2.log
ERROR: actionid=py27
msg=installpkg
cmdargs=[local('/home/travis/build/myteam/myproject/.tox/py27/bin/pip'), 'install', '--pre', '/home/travis/build/myteam/myproject/.tox/dist/myproject-0.0.1.zip']
env={'GOPATH': '/home/travis/.gvm/pkgsets/go1.1.1/global', 'COMPOSER_NO_INTERACTION': '1', 'rvm_version': '1.21.3 (latest-minor)', 'GOROOT': '/home/travis/.gvm/gos/go1.1.1', 'gvm_pkgset_name': 'global', 'TIMEZONE': 'UTC', 'rvm_path': '/home/travis/.rvm', 'GVM_PATH_BACKUP': '/home/travis/.gvm/bin:/usr/local/gradle/bin:/home/travis/.rvm/gems/ruby-1.9.3-p448/bin:/home/travis/.rvm/gems/ruby-1.9.3-p448@global/bin:/home/travis/.rvm/rubies/ruby-1.9.3-p448/bin:/home/travis/.rvm/bin:/usr/local/pypy/bin:/usr/local/phantomjs/bin:/home/travis/.nvm/v0.10.12/bin:./node_modules/.bin:/home/travis/.gvm/pkgsets/go1.1.1/global/bin:/home/travis/.gvm/gos/go1.1.1/bin:/home/travis/.gvm/pkgsets/go1.1.1/global/overlay/bin:/home/travis/.gvm/bin:/home/travis/.gvm/bin:/usr/local/gradle/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin', …
Run Code Online (Sandbox Code Playgroud)

python linux ubuntu travis-ci tox

1
推荐指数
1
解决办法
798
查看次数

travis 安全环境变量未在 tox 中使用

我可以在我的 travis 构建日志中看到 env 变量已正确导出:

Setting environment variables from .travis.yml
$ export K_API_KEY=[secure]
$ export K_PRIVATE_KEY=[secure]
$ export TOXENV=py27
Run Code Online (Sandbox Code Playgroud)

但是,在我使用基本 config.py 文件的测试中没有选择它们,该文件应该以这种方式获取 env 变量(API_KEY = os.environ['K_API_KEY']),请参阅相关的 travis 日志:

$ source ~/virtualenv/python2.7/bin/activate
$ python --version
Python 2.7.9
$ pip --version
pip 6.0.7 from /home/travis/virtualenv/python2.7.9/lib/python2.7/site-packages (python 2.7)
install
1.34s$ pip install -U tox
Collecting tox
  Downloading tox-2.3.1-py2.py3-none-any.whl (40kB)
    100% |################################| 40kB 1.2MB/s  
Collecting virtualenv>=1.11.2 (from tox)
  Downloading virtualenv-15.0.2-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 262kB/s 
Collecting py>=1.4.17 from https://pypi.python.org/packages/19/f2/4b71181a49a4673a12c8f5075b8744c5feb0ed9eba352dd22512d2c04d47/py-1.4.31-py2.py3-none-any.whl#md5=aa18874c9b4d1e5ab53e025008e43387 (from tox)
  Downloading …
Run Code Online (Sandbox Code Playgroud)

python travis-ci tox

1
推荐指数
1
解决办法
318
查看次数

带有 pytest 和 tox 的环境变量

如何使用 pytest 和 tox 测试环境变量?

验证文件

ENV_VAR = os.environ['ENV_VAR']

def validate_env_var(value):
    if value != ENV_VAR:
        raise Exception
Run Code Online (Sandbox Code Playgroud)

测试验证.py

class TestValidateEnvVar:
    def test_validate_env_var_pass(self):
        value = 'valid_env_value'
        os.environ["ENV_VAR"] = value
        validate.validate_env_var(value)
Run Code Online (Sandbox Code Playgroud)

如果我在tox.ini文件中设置环境变量:

[testenv]
setenv = ENV_VAR=valid_env_value
Run Code Online (Sandbox Code Playgroud)

测试通过,但我想保持测试隔离。

python pytest tox

1
推荐指数
2
解决办法
8659
查看次数

Tox 支持的工具列表

我如何知道 tox 是否提供对特定工具的支持?

具体来说,我想知道为什么这个 tox.ini 部分适用于 flake8:

[flake8]
max-line-length = 120 # works like a charm

[testenv:flake8]
deps = flake8    
commands = flake8 mypackage/
Run Code Online (Sandbox Code Playgroud)

而这个不适用于 mypy:

[mypy]
ignore-missing-imports = True # won't be taken into account

[testenv:mypy]
deps = mypy
commands = mypy mypackage/
Run Code Online (Sandbox Code Playgroud)

python tox flake8 mypy

1
推荐指数
1
解决办法
326
查看次数

如何指定在 tox 中使用哪个位置参数?

我有以下 tox.ini:

[tox]
envlist = py37-{lint, test}

[testenv:py37-{lint, test}]
envdir = {toxworkdir}/lint_and_test_env
deps = 
    pylint
    pytest
    pytest-xdist
commands =
    lint: pylint src {posargs}
    test: pytest tests {posargs}
Run Code Online (Sandbox Code Playgroud)

我想并行运行这两个环境并指定--jobs=4pylint 和-n autopytest。执行tox -p -- --jobs=4 -n auto失败,因为 pylint 无法识别 -n 参数,反之亦然。

有办法实现我的目标吗?

python tox

0
推荐指数
1
解决办法
870
查看次数

标签 统计

tox ×10

python ×9

flake8 ×2

pytest ×2

travis-ci ×2

linux ×1

mercurial ×1

mypy ×1

profiling ×1

pylint ×1

ubuntu ×1