标签: tox

解决了在python中运行unittest的过多方法所产生的混乱

我正在尝试实现一个完整而干净的测试python包的方法,这个方法符合以下要求:

  • 在没有设置的情况下在干净的机器上执行测试(virtualenv)
  • 多个平台收集结果
  • 多个python解释器收集结果
  • 代码覆盖率(将多次执行的结果合并到一个报告中)
  • 能够生成xml代码覆盖率报告,以便构建系统可以跟踪这种变化随时间的变化情况.
  • 能够启用基于平台的禁用测试
  • 在测试之前运行几个命令,比如pep8或autopep8
  • 并行运行测试.

我用几种方法:nose + pytest,tox + pytest但最近发现,pytest应该能够做到大部分的东西.

主要问题是我无法找到关于何时使用一种方法或另一种方法更好的明确比较.

有人可以解释这些并给出一些用例或这些配置的限制吗?......只是为了清楚说明何时采用某种方法.

最后我想要有这些选项:

  • quicktest - 在每个提交之前必须在本地运行测试
  • fulltest - 完整测试,在所有可用平台上运行它们,必须在制作新版本之前

nose pytest unittest2 tox

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

在tox命令中使用通配符

出于不同的原因,我必须在我的tox.ini中执行pip install作为命令(我这样skipsdist=True做tox将不会为我安装我的依赖项,但我仍然需要将其中一些安装到虚拟环境中).

问题是我有一个本地依赖项存储为tarball,其文件名中包含其版本,例如my-module-1.0.tar.gz.因此,我需要在命令中使用通配符,例如

pip install my-module-*.tar.gz
Run Code Online (Sandbox Code Playgroud)

但是在这种意义上,tox似乎不支持bash语义,因为我得到了错误

Requirement 'my-module-*.tar.gz' looks like a filename, but the file does not exist
Run Code Online (Sandbox Code Playgroud)

我试过在文件名周围加上引号以及转出星号,但没有成功.

有任何想法吗?

linux bash wildcard tox

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

使用tox与Anaconda python

在Ubuntu系统上,我试图用tox和多个python版本测试python包.我试图测试的一个python版本是64位Anaconda Python 2.7.在我开始使用Tox进行测试之前,我首先需要让virtualenv与Anaconda合作,因为Tox在内部使用virtualenv.

如您所见,virtualenv已安装在我的Anaconda环境中:

$ conda install virtualenv
Fetching package metadata: ....
Solving package specifications: ....................
# All requested packages already installed.
# packages in environment at /home/me/software/anaconda:
#
virtualenv                13.0.1                   py27_0  
Run Code Online (Sandbox Code Playgroud)

但是,尝试创建虚拟环境失败:

$ mkvirtualenv test
New python executable in test/bin/python
Installing setuptools, pip...
  Complete output from command /home/me/....envs/test/bin/python -c "import sys, pip; sys...d\"] + sys.argv[1:]))" setuptools pip:
  Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/home/me/.local/lib/python2.7/site-packages/virtualenv_support/pip-1.5.6-py2.py3-none-any.whl/pip/__init__.py", line 9, in <module>
  File "/home/me/.local/lib/python2.7/site-packages/virtualenv_support/pip-1.5.6-py2.py3-none-any.whl/pip/log.py", line 8, in …
Run Code Online (Sandbox Code Playgroud)

python virtualenv virtualenvwrapper tox anaconda

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

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

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

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

谢谢!

tox github-actions

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

如何配置tox以便在单个环境中运行pytest覆盖而不是全部?

我确实有一个复杂的tox.ini配置,有多个环境用于不同版本的python.

我想知道如何告诉tox只在默认的python解释器上运行覆盖.

其中一个问题是默认的python环境可能因平台而异.

我有一个包装脚本调用tox -e py25,py26,docs-e参数是检测到的python版本的位置.

[tox]
     ...
[testenv:docs]
     ...
[testenv]
     commands=py.test --cov-report xml --cov scripts
     ...
[testenv:py26]
     ...
[testenv:py25]
     ...
Run Code Online (Sandbox Code Playgroud)

期望的行为:运行pytest,覆盖单个环境(这应该与jenkins集成).

coverage.py pytest tox

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

与tox一起为Travis CI指定精确的Python版本

我有以下.travis.yml:

language: python

env:
  - TOXENV=py27
  - TOXENV=py34

install:
  - pip install -U tox

script:
  - tox
Run Code Online (Sandbox Code Playgroud)

和以下tox.ini:

[tox]
envlist = py27,py34

[testenv]
commands = py.test tests/
deps = -rtests/test_requirements.txt
Run Code Online (Sandbox Code Playgroud)

我需要Python 3.4.3,这在Travis中已有一段时间了.如何在.travis.yml中指定这个精确的Python版本,以便tox可以使用正确的py34环境版本?

python travis-ci tox

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

tox在Windows上哪里搜索PyPy/PyPy3?

我正在使用tox针对不同的Python解释器运行测试.tox发现我对CPython解释器的隐瞒,因为它们位于默认位置.但是,当我下载PyPy for Windows时,它是一个存档,而不是一个安装程序.我应该在哪里放置PyPy/PyPy3以便tox自动找到它们?

python pypy tox

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

tox无法在D:\ python27路径中检测到python解释器

我的tox.ini文件看起来像这样

[tox]
envlist=py27

[testenv]
deps=
    pytest
Run Code Online (Sandbox Code Playgroud)

这找不到我在D:\ python27而不是标准c:\ python27位置的基本python安装

如果我将tox.ini更改为此,它可以工作,但看起来很丑。

[tox]
envlist=cpy27,dpy27
skip_missing_interpreters=True
toxworkdir={toxinidir}/build/tox

[testenv]
basepython=
    cpy27: C:\Python27\python.exe
    dpy27: D:\Python27\python.exe

deps=
    pytest
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,如何配置tox以便弄清python在Windows机器上的安装位置,没有明确指定路径,因为每个开发人员都可能将其安装在Windows机器上的不同路径中。

python python-2.7 tox

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

如何让 pytest 在已安装的模块中发现和运行 doctests?

我正在添加单元测试和一种“传统”Python 包。一些模块包含嵌入在 docstrings 中的自己的 doctests。我的目标是运行这些文档测试和新的专用单元测试。

下面这个Q&A(“如何让py.test运行文档测试以及正常的测试目录?”)我使用的--doctest-modules选项pytest。当从源存储库运行时,pytest确实从src目录下的 Python 模块中发现了嵌入的 doctests 。

但是,我的目标是测试源发行版是否完全构建和安装,然后针对已安装的包测试所有内容。为此,我正在使用toxwhich 自动构建sdist(源代码分发)tarball 的过程,将其安装在虚拟环境中,并针对已安装的版本运行测试。为了确保它是已安装的版本,而不是源存储库中由测试导入的版本,我遵循本文中的建议存储库现在如下所示:

repo/
  src/
    my_package/
      __init__.py
      module_a.py
      module_b.py
      ...
  tests/
    test_this.py
    test_that.py
  requirements.txt
  setup.py
  tox.ini
Run Code Online (Sandbox Code Playgroud)

(下面的测试脚本tests将包导入为 in import my_package,它会命中已安装的版本,因为存储库布局确保src/my_package目录不在模块搜索路径中。)

tox配置文件中,相关部分看起来像

[tox]
envlist = py27,py36,coverage-report

[testenv]
deps =
  -rrequirements.txt
commands =
  coverage run -p -m pytest --

[pytest]                                                                        
addopts = --doctest-modules 
Run Code Online (Sandbox Code Playgroud)

到目前为止,测试运行良好,并且 doctests …

python testing doctest pytest tox

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

为什么tox在install_command期间看不到环境变量?

鉴于tox==3.13.2请参阅详细信息

++pip install tox
Requirement already satisfied: tox in /home/travis/virtualenv/python3.7.1/lib/python3.7/site-packages (3.13.2)
Run Code Online (Sandbox Code Playgroud)

tox.ini

[tox]
envlist =
    py-cythonized


[testenv]
; simplify numpy installation
setenv =
    LAPACK=
    ATLAS=None
    PYTHONWARNINGS=ignore

; Copy all environment variables to the tox test environment
passenv = *

deps =
    py-cythonized: Cython >= 0.28.5

changedir = nltk/test
commands =
    ; scipy and scikit-learn requires numpy even to run setup.py so
    ; they can't be installed in one command
    pip install scipy scikit-learn

    ; python …
Run Code Online (Sandbox Code Playgroud)

python continuous-integration environment-variables travis-ci tox

6
推荐指数
0
解决办法
164
查看次数