标签: tox

如何在没有setup.py的项目中运行tox?

我想用tox两个virtualenvs运行我的单元测试,因为我的应用程序必须支持2个不同的Python版本.

我的问题是tox需要a setup.py,但我没有,因为我的应用程序不是模块并且有自己的安装程序.现在我不想经历自动化安装过程的麻烦setup.py,我只想运行我的单元测试而不必写一个setup.py.

那可能吗?或者我怎么能写一个"空"的setup.py,什么都不做?你能指点我一些关于这个主题的distutils文档(文档解释了如何写一个有意义的setup.py,而不是空的)?

python unit-testing distutils tox

60
推荐指数
2
解决办法
9422
查看次数

如何通过需求文件安装模块?

我们的python项目有一个requirements.txt文件,列出了一些依赖模块.我们曾经使用过

pip install -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

安装这些依赖项.我们现在使用tox来构建测试环境.我的问题是我们如何直接通过requirements.txt安装模块.

以下是我们的tox.ini和requirements.txt:

tox.ini:

[tox]
envlist=py27
[testenv]
deps=pytest
     boto
commands=py.test
Run Code Online (Sandbox Code Playgroud)

rquirements.txt:

boto
Run Code Online (Sandbox Code Playgroud)

有没有办法从tox.ini中删除"boto"并添加类似的内容

deps_files=requirements.txt
Run Code Online (Sandbox Code Playgroud)

python tox

45
推荐指数
4
解决办法
2万
查看次数

使py.test,coverage和tox一起工作:__ init__.py在tests文件夹中?

我有一个奇怪的问题tox,py.test,coveragepytest-cov:当py.test--cov选项是从启动tox,这似乎需要__init__.py的文件tests是不会立即明显的文件夹.

在撰写这篇文章时,我通​​过添加上述内容解决了最初的问题tests/__init__.py,但到目前为止我还没有完全理解为什么它确实有效或无效,所以我仍然在寻求帮助.请参阅下面的详细信息.

我在SO上找到了一个相关的问题,但它只会让它更加混乱,因为答案似乎与我到目前为止所得到的相反: `py.test`和`__init __.py`文件

另请参阅此处的官方文档:py.test - 良好的集成实践(页面底部).


简化的项目结构:

setup.py
tox.ini
.coveragerc
project/
    __init__.py
    module1.py
    module2.py
    tests/
        __init__.py (optional, an empty file)
        test_module1.py
        test_module2.py
Run Code Online (Sandbox Code Playgroud)

相关部分tox.ini:

[testenv:check]
commands = py.test --cov=project --cov-report=term
deps =
    pytest
    coverage
    pytest-cov

[pytest]
python_files = test_*.py
norecursedirs = .tox
Run Code Online (Sandbox Code Playgroud)

相关部分.coveragerc:

[run]
branch = True
omit = project/tests/*
Run Code Online (Sandbox Code Playgroud)

现在,结果如下:

  • py.test --cov=project …

python code-coverage coverage.py pytest tox

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

如何使用Travis-CI运行Tox

如何在Travis-CI中使用Tox测试不同的Python版本?

我有一个tox.ini:

[tox]
envlist = py{27,33,34,35}
recreate = True

[testenv]
basepython =
    py27: python2.7
    py33: python3.3
    py34: python3.4
    py35: python3.5
deps =
    -r{toxinidir}/pip-requirements.txt
    -r{toxinidir}/pip-requirements-test.txt
commands = py.test
Run Code Online (Sandbox Code Playgroud)

它运行我的Python单元测试在几个Python版本,并完美地工作.

我想在Travis-CI中设置一个构建,当我将更改推送到Github时自动运行它,所以我有一个.travis.yml:

language: python
python:
-   "2.7"
-   "3.3"
-   "3.4"
-   "3.5"
install:
-   pip install tox
script:
-   tox
Run Code Online (Sandbox Code Playgroud)

这在技术上似乎有效,但它在每个Python版本中冗余地运行我的所有测试......来自每个版本的Python.因此,需要5分钟的构建需要45分钟.

我尝试python从我的yaml文件中删除列表,因此Travis只运行一个Python实例,但这导致我的Python3.5测试失败,因为找不到3.5解释器.显然,这是一个已知的限制,因为Travis-CI不会安装Python3.5,除非您在配置中指定了确切的版本......但它不会为其他版本执行此操作.

有没有办法解决这个问题?

python unit-testing travis-ci tox python-unittest

24
推荐指数
4
解决办法
6372
查看次数

是否可以使用基于conda的Python安装tox?

Python测试工具tox似乎旨在与virtualenv一起使用.它还适用于基于conda/anaconda的Python安装吗?

python tox conda

23
推荐指数
4
解决办法
4557
查看次数

ValueError:无法在包 pip._vendor.distlib 中找到资源 t64.exe

我正在尝试运行 tox 命令,但它显示错误

ValueError: Unable to find resource t64.exe in package pip._vendor.distlib

ERROR: python3.7: could not install deps [-rrequirements.txt]; 
v = InvocationError("'C:\\path\\test_tox\\.tox\\python3.7\\Scripts
\\python.EXE' -m pip install -rrequirements.txt", 2)
Run Code Online (Sandbox Code Playgroud)

已经尝试了互联网上提供的大多数解决方案,但似乎没有任何效果。我不确定这的根本原因是什么

requirements.txt:

dvc
dvc[gdrive]
sklearn
pandas
pytest
tox

Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

python tox

23
推荐指数
2
解决办法
2万
查看次数

pip从setup.py安装tox的tox依赖项

我制作了我的项目,setuptools我想用它进行测试tox.我在变量中列出了依赖项并添加到setup()参数(tests_requireextras_require)中.我的项目需要安装tests_require测试中列出的所有依赖项,但pip install不安装它们.

我尝试了这个,但它不起作用:

install_command = pip install {opts} {packages}[tests]
Run Code Online (Sandbox Code Playgroud)

如何安装测试依赖项而无需管理多个依赖项列表(即在两者test_requirements.txttests_require变量中列出所有依赖项)?

python pip setuptools easy-install tox

22
推荐指数
3
解决办法
1万
查看次数

如何导入tox中的所有环境变量

我在setenv中使用以下命令从我运行的地方导入环境变量,但有没有办法导入所有变量,这样我就不需要逐个导入了.

例如:{env:TEMPEST_CONFIG:}和{env:TEMPEST_CONFIG_DIR:}用于导入这两个变量.

[testenv:nosetests]
setenv =
    TEMPEST_CONFIG={env:TEMPEST_CONFIG:}
    TEMPEST_CONFIG_DIR={env:TEMPEST_CONFIG_DIR:}
deps = {[testenv]deps}
commands =
    find . -type f -name "*.pyc" -delete
    bash {toxinidir}/tools/setup.sh
    nosetests --with-xunit {posargs}
Run Code Online (Sandbox Code Playgroud)

python virtualenv setenv tox

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

tox中的条件命令?(tox,travis-ci和工作服)

TL;博士:

我正在为我的一个项目设置CI,在github上托管,使用toxtravis-ci.在构建结束时,我converalls会将覆盖率报告推送到coveralls.io.我想让这个命令'有条件' - 只有当测试在travis上运行时才能执行; 不是当他们在我的本地机器上运行时.有没有办法让这种情况发生?

细节:

我正在尝试测试的包是一个python包.我正在使用/计划使用以下"基础架构"来设置测试:

  • 测试本身就是py.test多种多样的.
  • 可以说,CI脚本来自tox.这让我可以在本地运行测试,这对我来说非常重要.我不想每次需要测试运行时都要推送到github.我也用numpy,并matplotlib在我的包,因此在运行测试周期的空洞的数量上travis-ci似乎过于浪费在我身上.因此,放弃tox.travis.yml单独使用不是一种选择.
  • CI服务器是 travis-ci

相关的测试脚本如下所示:

.travis.yml

language: python
python: 2.7
env:
  - TOX_ENV=py27
install:
  - pip install tox
script:
  - tox -e $TOX_ENV
Run Code Online (Sandbox Code Playgroud)

tox.ini

[tox]
envlist = py27

[testenv]
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
deps =
    pytest
    coverage
    pytest-cov
    coveralls
commands =
    py.test --cov={envsitepackagesdir}/mypackage --cov-report=term --basetemp={envtmpdir}
    coveralls
Run Code Online (Sandbox Code Playgroud)

这个文件让我在本地运行测试.但是,由于最后的coveralls呼叫,测试原则上失败了:

py27 …
Run Code Online (Sandbox Code Playgroud)

python travis-ci tox coveralls

19
推荐指数
3
解决办法
1864
查看次数

Python打包:在安装时生成python文件,使用tox

我想在安装时生成一个python文件.

我想既这项工作python setup.py develop,python setup.py installpip install.到现在为止还挺好.

但是我也希望这与tox一起使用.这是我遇到问题的地方.

我使用的方法是调整developinstall命令以在setup.py中生成源代码,如下所示:

# make code as python 3 compatible as possible
from __future__ import absolute_import, division, print_function, unicode_literals

import subprocess
import setuptools
import os.path
import distutils.core

from setuptools.command.develop import develop
from setuptools.command.install import install


# Build anltr files on installation
#   this is such a mess... it looks like there are
#   no common steps to develop and install

class AntlrDevelopCommand(develop): …
Run Code Online (Sandbox Code Playgroud)

python code-generation build setuptools tox

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