标签: tox

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

如何告诉tox使用PyPI镜像来安装包?

有没有办法告诉tox测试自动化工具在安装所有软件包时使用PyPI镜像(显式测试依赖关系tox.ini和依赖关系setup.py)?

例如,pip install有一个非常有用的--use-mirrors选项,可以将镜像添加到包服务器列表中.

python testing pypi tox

8
推荐指数
3
解决办法
2638
查看次数

Tox 丢弃 pythonpath,显式重置它是个好主意吗?

在我的virtualenv激活中,我喜欢设置export PYTHONPATH=<mypath>以便可以直接运行脚本。现在,当我tox从 virtualenv 中运行时,我收到以下令人震惊的红色警告:

WARNING: Discarding $PYTHONPATH from environment, to override specify PYTHONPATH in 'passenv' in your configuration.
Run Code Online (Sandbox Code Playgroud)

我确实理解这个警告,并且我对 tox 覆盖 PYTHONPATH 没什么意见,但这个警告很烦人。我可以离开 venv 并tox在没有它的情况下运行,但这也很烦人。

PYTHONPATH=""运行 tox 时明确归零是个好主意吗?

[testenv]
# Explicitely reset pythonpath to avoid the "discarding" warning
setenv = PYTHONPATH = ""
Run Code Online (Sandbox Code Playgroud)

tox这是否会影响我尚不知道的可能想要对路径执行的其他操作?

python virtualenv tox

8
推荐指数
0
解决办法
1197
查看次数

使用 tox 安装可选依赖项

我使用tox来测试具有以下基本配置的 python 项目 ( tox.ini):

[tox]
envlist = py3
isolated_build = True

[testenv]
deps =
    pytest
    pytest-cov
commands =
    pytest --cov {envsitepackagesdir}/foobar --cov-report xml --cov-report term
Run Code Online (Sandbox Code Playgroud)

不幸的是,该包的可选依赖项(如 中指定的setup.cfg)没有安装;原始点中相应的行是

pip install .[all]
Run Code Online (Sandbox Code Playgroud)

如何让 tox 安装所有可选依赖项?

python tox

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

Tox警告:找到测试命令但未在testenv中安装

嘿家伙所以我基本上使用tox来完成我的项目.

这是我的tox.ini文件

[tox]
envlist =
    py27,
    lint,
    coverage

skipsdist = True

[testenv:py27]
deps = -rrequirements.txt
commands = python -m unittest discover -s ./tests

[testenv:coverage]
commands =
    coverage run --source=tests -m unittest discover -s tests/
    coverage html
    coverage report


[testenv:lint]
commands = pylint ./foo
Run Code Online (Sandbox Code Playgroud)

每当我运行tox时,一切都在执行,基本上是linting,coverage.

但Tox正在显示所有事情的警告.

WARNING:test command found but not installed in testenv
Maybe you forgot to specify a dependency? See also the whitelist_externals envconfig setting.
Run Code Online (Sandbox Code Playgroud)

一切都成功但它仍然显示警告和错误

任何人都可以告诉我我做错了什么.

我的requirements.txt文件

requests==2.18.4
JsonForm==0.0.2
jsonify==0.5
jsonschema==2.6.0
JsonSir==0.0.2
python-dateutil==1.5
DateTime==4.2
urllib3==1.22
contextlib2==0.5.5
mock==2.0.0
patch==1.16
Run Code Online (Sandbox Code Playgroud)

python unit-testing pylint tox

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

如何将测试标记为“长”并跳过它们?

tox我通常使用which 调用来运行测试pytest。这种设置在许多项目中都运行良好。然而,在某些项目中,我有一些需要很长时间(几分钟)的测试。我不想每次都运行它们。我想装饰测试一样长。

像这样的东西:

$ tox --skip-long
Run Code Online (Sandbox Code Playgroud)

$ tox --skip-long
Run Code Online (Sandbox Code Playgroud)

python pytest tox python-decorators

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

更改毒物工作目录

查看tox global settingstox 文档中的部分,.tox工作目录的目录是在tox.ini所在目录中创建的:

\n\n
toxworkdir={toxinidir}/.tox(PATH)\n    Directory for tox to generate its environments into, will be created if \n    it does not exist.\n
Run Code Online (Sandbox Code Playgroud)\n\n

有没有办法改变这个位置?

\n\n

例如,我有一个项目如下:

\n\n
awesome_project/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 main.py\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 src\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 app.py\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 tox.ini\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想tox.iniawesome_projectdir 执行,但想将.toxdir写入而/tmp/.tox不是 in 中awesome_project/.tox

\n\n

感谢帮助。

\n

python virtualenv tox

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

如何使用“pip install git+ssh”安装附加功能?

我有一个内部 Python 包,我安装tox

pip install git+ssh://git@bitbucket.org/org/repo.git
Run Code Online (Sandbox Code Playgroud)

这有效。

不起作用的是安装额外的server.

我尝试过的

pip install git+ssh://git@bitbucket.org/org/repo.git[server]`
Run Code Online (Sandbox Code Playgroud)

git 克隆失败,错误代码为 128(无法克隆)

pip install git+ssh://git@bitbucket.org/org/repo.git [server]
Run Code Online (Sandbox Code Playgroud)

克隆有效,Invalid requirement: '[server]'(解析异常

pip install -e git+ssh://git@bitbucket.org/org/repo#egg=repo[server]
Run Code Online (Sandbox Code Playgroud)

无法检测“git+ssh://git@bitbucket.org/org/repo.git”的要求名称,请使用 #egg=your_package_name 指定一个


我想我可能会受到这个错误的影响:How can I install extras with `pip install git+ssh`?

我的(简化)tox.ini

[tox]
skipsdist = True
envlist = begin,py35,py36,end

[testenv]
commands =
    pip install -e git+ssh://git@bitbucket.org/org/repo#egg=repo[server]
Run Code Online (Sandbox Code Playgroud)

python git pip tox

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

如何在 tox 中要求特定的软件包版本?

在我的tox.ini文件中,依赖项是通过requirements.txt也使用的文件安装的setup.py,如下所示:

requirements.txt文件包含可接受的包范围django,具体取决于安装的 python 版本,如下所示:

Django>=1.11,<2 ; python_version == '2.7'
Django>=1.11,<3 ; python_version > '3'
Run Code Online (Sandbox Code Playgroud)

对于 python3,我想确保测试运行django 2.0以及django 2.1+默认安装的最新版本,遵守requirements.txt文件中指定的版本约束。为此,我使用命令强制安装所需的 django 版本,如下所示:

[tox]
envlist = {py27,py3}-django111,py3-django{20,21}

[testenv]
deps =
    -r{toxinidir}/requirements.txt

commands =
    django111: pip install 'Django>=1.11,<1.12'
    py3-django20: pip install 'Django>=2.0,<2.1'
    py3-django21: pip install 'Django>=2.1'
    pytest
Run Code Online (Sandbox Code Playgroud)

理想情况下,我可以deps像这样添加到变量中:

[testenv]
deps =
    -r{toxinidir}/requirements.txt
    django111: Django>=1.11,<1.12
    py3-django20: Django>=2.0,<2.1
    py3-django21: Django>=2.1

commands =
    pytest
Run Code Online (Sandbox Code Playgroud)

pip不支持双重要求,即使版本约束的指定方式没有冲突,也会抛出错误。

commands …

python tox

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

如果你使用 GitHub actions 的矩阵策略,那么运行 tox 不是多余的吗?

使用 GitHub actions 矩阵策略,您可以指定您希望代码运行的 python 版本(例如),那么是否需要在 GitHub actions 工作流程中运行 tox?

是否有任何毒素提供了 gh 行动矩阵策略所没有的东西?

谢谢!

tox github-actions

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