天道酬勤,学无止境

Auto-chose platform (or other) condition in tox sections

I want to specifically run a certain tox section which then auto-decides on the specific platform. The example code-snippet below works fine if I just ran tox -e ALL. Then the platform condition nicely sects out the correct platform.

However, I want to only adress and run a specific section like for instance something like tox -e other (not tox -e other-win, other-linux) and then have tox auto-chosing the corresponding platform (or any other) condition.

I don't know if this way of setting up conditions in tox is not possible, or if I'm missing something.

[tox]
skipsdist = true

[testenv:systest-{win, linux}]
platform =
    linux: linux
    win: win|msys

whitelist_externals = 
    win: cmd
    linux: sh

commands =
    win: cmd /r echo {env:OS}
    linux: sh -c echo {env:OS}

[testenv:other-{win, linux}]
platform =
    linux: linux
    win: win|msys

whitelist_externals = 
    win: cmd
    linux: sh

commands =
    win: cmd /r echo {env:OS}
    linux: sh -c echo {env:OS}

评论

You could give the tox-factor plugin a try.

For example:

tox.ini

[tox]
envlist =
    alpha-{redmond,tux}
    bravo-{redmond,tux}
requires =
    tox-factor
skipsdist = true

[testenv]
commands =
    python -c 'import sys; print("platform", sys.platform)'
platform =
    redmond: win32
    tux: linux

This gives the following four environments:

$ tox --listenvs
alpha-redmond
alpha-tux
bravo-redmond
bravo-tux

That can be selected according to the factors:

$ tox --listenvs --factor tux
alpha-tux
bravo-tux
$ tox --listenvs --factor alpha
alpha-redmond
alpha-tux

And then run like this (for example on a Linux platform):

$ tox --factor bravo
bravo-tux run-test-pre: PYTHONHASHSEED='1770792708'
bravo-tux run-test: commands[0] | python -c 'import sys; print("platform", sys.platform)'
platform linux
________________________________________________ summary ________________________________________________
SKIPPED:  bravo-redmond: platform mismatch ('linux' does not match 'win32')
  bravo-tux: commands succeeded
  congratulations :)

References:

  • https://github.com/tox-dev/tox/issues/1338
  • https://pypi.org/project/tox-factor/

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • Basic tox setup to test a package
    I am trying to use tox to test a package I am writing and I cannot get it to work. My setup.cfg contains the following section: [tox] envlist = py36,py37,py36-black [testenv] deps = pytest commands = pytest tests [testenv:py36-black] deps = black flake8 flake8-black mypy commands = black --check --diff setup.py mypackage tests flake8 mypackage tests mypy mypackage tests I have a setup.py file to install my module, and if I run pip install -e ., everything works well and I can use the module normally. Now, if I run: tox -e py36,py37,py36-black -p all The tests for py36-black succeed but pytest
  • 网格列不起作用? [复制](grid-column doesn't work? [duplicate])
    问题 这个问题在这里已经有了答案: 网格属性不适用于网格容器内的元素1 个回答在更高级别的容器中定位嵌套网格项目(子网格功能) (1 个回答) 3年前关闭。 我有这个标记 <main> <section class="download"> <img src="media/icon.svg" alt="TOX chat icon" width="345" height="280"> <div class="download_desc"> <h1>A New Kind of Instant Messaging</h1> <p> Whether it's corporations or governments, digital surveillance today is widespread. Tox is easy-to-use software that connects you with friends and family without anyone else listening in. While other big-name services require you to pay for features, Tox is completely free and comes without advertising — forever. </p> </div> <
  • 如果py.test从另一个目录执行脚本,coverage.py将不覆盖脚本(coverage.py does not cover script if py.test executes it from another directory)
    问题 我得到了一个Python脚本,该脚本接受命令行参数,并处理了一些文件。 我与写作测试成功py.test把这个脚本通过其步伐,与执行它subprocess.call 。 现在,我想使用coverage.py分析代码coverage.py 。 通过pytest-cov插件(内置了子进程处理)使用Coverage时,从使用py.test的tmpdir固定装置创建的临时测试目录中调用脚本时,该脚本不会看到/覆盖我的脚本。 在脚本所在的目录中调用该脚本时,它确实会看到我的脚本(并且filename参数指向远程路径)。 在这两种情况下,我的测试均通过! 涵盖范围3.6,pytest-2.3.5,pytest-cov 1.6,全部来自PyPi。 问题:即使脚本在另一个目录中执行,我如何获得覆盖范围来识别我的脚本? 这是覆盖范围中的错误,还是根本无法做到的事情? 如果后者毕竟是tmpdir是py.test的一种存储机制,将会感到惊讶。 最小示例: 我有一个脚本my_script.py ,它仅arg_file.txt通过命令行参数提供的arg_file.txt文件的内容。 在两个不同的测试中,这一次是在tmpdir调用的,一次是在脚本的位置中调用的。 两个测试都通过了,但是在tmpdir测试中,我没有得到任何覆盖信息! 测试运行: ~/pytest_experiment$ py.test -s
  • setup.py 中的 extras_require() 和 install_requires() 的区别?(Difference between extras_require() and install_requires() in setup.py?)
    问题 我试图了解 setup.py 中extras_require()和install_requires()之间的区别,但无法理解。 两者都用于安装Python依赖项,但它们之间有什么区别? 回答1 根据 setuptools 文档, extras_require一个字典将“extras”(项目的可选功能)的名称映射到字符串或字符串列表,指定必须安装哪些其他发行版才能支持这些功能。 和 install_requires一个字符串或字符串列表,指定在安装此发行版时需要安装哪些其他发行版。 声明“Extras”(具有自己的依赖项的可选功能)部分详细说明了这一点: 有时,项目具有“推荐”的依赖项,并非项目的所有用途都需要这些依赖项。 例如,如果安装了 ReportLab,项目可能会提供可选的 PDF 输出,如果安装了 docutils,则项目可能会提供 reStructuredText 支持。 这些可选功能称为“附加功能”,setuptools 也允许您定义它们的要求。 通过这种方式,需要这些可选功能的其他项目可以通过在其install_requires命名所需的附加功能来强制安装附加要求。 最大的区别是extras_require中的需求只在需要的时候安装: 这些要求不会自动安装,除非另一个包依赖于它们(直接或间接),通过在相关项目名称后的方括号中包含所需的“附加”。 (或者,如果
  • 如何告诉 py.test 跳过某些目录?(How to tell py.test to skip certain directories?)
    问题 我尝试在 setup.cfg 中使用 norecursedirs 选项来告诉 py.test 不要从某些目录中收集测试,但它似乎确实忽略了它。 [tool:pytest] norecursedirs=lib/third 当我运行py.test我确实看到它是如何从lib/third内部获取测试的! 回答1 py.test --ignore=somedir为我工作 回答2 如果您有多个具有不同父级的目录,您可以指定不同的--ignore参数: py.test --ignore=somedir --ignore=otherdir --ignore=etcdir 新选项:--ignore 将阻止收集指定的路径。 可以多次指定。 回答3 我解开了谜团:如果在其中一个可能的配置文件( pytest.ini 、 tox.ini和setup.cfg )中找到了 pytest 部分,则 pytest 将不会查找任何其他文件,因此请确保您在其中定义了 py.test 选项单个文件。 我建议使用setup.cfg 。 回答4 您可以使用 py.test -k 'not third' 排除所有“第三”目录内容。 回答5 norecursedirs应该可以工作。 检查您是否有 pytest.ini 或其他 setup.cfg 文件。 你如何调用py.test ? 回答6 就我而言,问题是缺少通配符。
  • 您可以在 setuptools 中为 Python 2 和 3 设置条件依赖项吗?(Can you set conditional dependencies for Python 2 and 3 in setuptools?)
    问题 当发布同时支持 Python 2 和 3 的 Python egg 时,您能否指定依赖项会根据您使用的版本而改变? 例如,如果您将dnspython用于 Python 2,则有一个名为dnspython3的 Python 3 版本。 如果这是唯一的障碍,例如,如果您运行了2to3以确保库的其余部分与两个版本兼容,那么您是否可以编写您的setuptools.setup()函数,使您的鸡蛋可用于两个版本。 我浏览了这些文件,似乎无法找到这个问题的答案: 将 Python 2 代码移植到 Python 3 setuptools 的声明依赖关系 Travis CI Python 文档 pip 需求文件 回答1 Bogdan 的评论帮助我指明了方向。 我想我会发布我所做的以防其他人遇到我的问题。 对于问题中的示例,我完全按照 Bogdan 的建议进行了操作: 设置文件 import sys if sys.version_info[0] == 2: dnspython = "dnspython" elif sys.version_info[0] == 3: dnspython = "dnspython3" setup( ... <snip> ... install_requires=[ "%s >= 1.10.0" % dnspython, ] ) 但是,这仍然存在 Travis
  • 可以在基于conda的Python安装中使用tox吗?(Is it possible to use tox with conda-based Python installations?)
    问题 Python测试工具tox似乎旨在与virtualenv一起使用。 它也可以在基于conda / anaconda的Python安装上工作吗? 回答1 如今,tox-conda插件应该可以缩小这一差距,但是需要积极使用conda进行测试和改进的贡献者。 从自述文件: tox-conda是一个插件,可与toda自动化工具的conda软件包和环境管理器集成。 这就像在吃蛋糕也要吃蛋糕一样! 默认情况下, tox使用[virtualenv](https://virtualenv.pypa.io]创建隔离的环境,并从pip安装依赖项。 相反,当使用tox-conda插件时, tox将使用conda创建环境,并从conda安装指定的依赖项。 对于依赖conda进行环境管理和程序包分发但希望利用tox提供的功能进行测试自动化的开发人员而言,这很有用。 要安装该插件,需要将其与tox一起安装在相同的虚拟环境中。 要创建一个包含tox和tox-conda的虚拟环境,就足够了: $ python3 -m venv toxbase $ toxbase/bin/pip install tox tox-conda [...] Successfully installed tox-3.13.2 tox-conda-0.2.0 $ toxbase/bin/tox --version 3.13.1
  • 第三章 递归与分治策略
    文章目录 递归的概念分治法的基本思想分治法所能解决的问题一般具有以下几个特征众数与重数循环赛日程表输油管道问题 递归的概念 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数。 在计算机算法设计与分析中,使用递归技术往往使函数的定义和算法的描述简洁且易于理解。 递归需要有边界条件、递归前进段和递归返回段。 当边界条件不满足时,递归前进; 当边界条件满足时,递归返回。 注意:在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。 递归的缺点: 递归算法解题的运行效率较低。 在递归调用过程中,系统为每一层的返回点、局部变量等开辟了堆栈来存储。递归次数过多容易造成堆栈溢出等。 递归需要有边界条件、递归前进段和递归返回段。 当边界条件不满足时,递归前进; 当边界条件满足时,递归返回。 注意:在使用递增归策略时,必须有一个明确的递归结束条件,称为递归出口,否则将无限进行下去(死锁)。 递归的缺点: 递归算法解题的运行效率较低。 在递归调用过程中,系统为每一层的返回点、局部变量等开辟了堆栈来存储。递归次数过多容易造成堆栈溢出等。 分治法的基本思想 1.分治法的基本思想是将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。 2.对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题
  • grid-column doesn't work? [duplicate]
    This question already has answers here: Grid properties not working on elements inside grid container (1 answer) Positioning nested grid items in a higher level container (a subgrid function) (1 answer) Closed 3 years ago. I have this markup <main> <section class="download"> <img src="media/icon.svg" alt="TOX chat icon" width="345" height="280"> <div class="download_desc"> <h1>A New Kind of Instant Messaging</h1> <p> Whether it's corporations or governments, digital surveillance today is widespread. Tox is easy-to-use software that connects you with friends and family without anyone else
  • 使用文档字符串列出py.test中的测试(Use docstrings to list tests in py.test)
    问题 这是一个简单的测试文件: # test_single.py def test_addition(): "Two plus two is still four" assert 2 + 2 == 4 def test_addition2(): "One plus one is still two" assert 1 + 1 == 2 py.test中的默认输出类似于 $ py.test test_single.py -v [...] test_single.py::test_addition PASSED test_single.py::test_addition2 PASSED 我想拥有 Two plus two is still four PASSED One plus one is still two PASSED 即使用文档字符串作为测试的描述。 我试图在conftest.py文件中使用自定义conftest.py : import pytest @pytest.mark.tryfirst def pytest_runtest_makereport(item, call, __multicall__): # execute all other hooks to obtain the report object rep = __multicall__.execute()
  • 使用 tox 运行 python 单元测试时遇到问题 - 已安装模块的导入错误(Trouble running python unit tests with tox - ImportError for module that is already installed)
    问题 我是 python 的新手,正在尝试为这个项目运行单元测试:https://github.com/matrix-org/synapse 我正在从项目的顶层运行 tox。 我收到此错误:exceptions.ImportError: No module named pymacaroons 但是 pymacaroons 已经使用 pip 安装了。 据我所知,我只有一个版本的 python。 真的被这里难住了。 回答1 tox创建自己的虚拟环境并根据tox.ini安装依赖tox.ini 。 pymacaroons未在tox.ini列出,因此未安装。 要安装它,请将pymacaroons添加到tox.ini (部分[testenv] , key deps )或将-rrequirements.txt添加到tox.ini并在requirements.txt列出pymacaroons 。
  • 运行后如何清理有毒环境?(How to clean a tox environment after running?)
    问题 我有以下tox.ini文件: [tox] envlist = flake8,py{35,36,37,38}{,-keyring} [testenv] usedevelop = True install_command = pip install -U {opts} {packages} deps = .[test] keyring: .[keyring] setenv = COVERAGE_FILE = .coverage.{envname} commands= pytest {toxinidir}/tests -n 4 {posargs} [testenv:flake8] basepython = python3 deps = flake8 commands= flake8 src tests [flake8] ignore: F401,E402,E501,W605,W503 当运行tox命令,它创建一个.tox文件夹包含在指定的每个环境中的文件夹[tox]所述的部分tox.ini 。 我想在运行tox时测试成功后自动读取这些特定文件夹,而无需手动运行rm -rf .tox/NAME_OF_THE_ENV 。 我已经搜索了 tox 文档,但一无所获。 有可能这样做吗? 如果是,如何? 回答1 我知道这不完全是您所要求的,但值得一提的是,tox 的-r / -
  • Java速度访问数组索引与临时变量(Java speed access array index versus temp variable)
    问题 用Java更快些。 直接多次访问数组索引,还是将数组索引的值保存到新变量中,然后将其用于后续计算? 索引访问 if ((shape.vertices[0].x >= fromX && shape.vertices[0].x <= toX) || // left side of shape in screen (shape.vertices[0].x <= fromX && shape.vertices[0].x + shape.width >= fromX) || // right side of shape in screen (shape.vertices[0].x >= fromX && shape.vertices[0].x + shape.width <= toX)) { // shape fully in screen // ... } 温度变量 float x = shape.vertices[0].x; float y = shape.vertices[0].y; if ((x >= fromX && x <= toX) || // left side of shape in screen (x <= fromX && x + shape.width >= fromX) || // right side of shape in screen (x >=
  • How to clean a tox environment after running?
    I have the following tox.ini file: [tox] envlist = flake8,py{35,36,37,38}{,-keyring} [testenv] usedevelop = True install_command = pip install -U {opts} {packages} deps = .[test] keyring: .[keyring] setenv = COVERAGE_FILE = .coverage.{envname} commands= pytest {toxinidir}/tests -n 4 {posargs} [testenv:flake8] basepython = python3 deps = flake8 commands= flake8 src tests [flake8] ignore: F401,E402,E501,W605,W503 When I run the tox command, it creates a .tox folder containing a folder for every environment specified in the [tox] section of the tox.ini. I would like to get read automatically of
  • travis 安全环境变量未在 tox 中使用(travis secure env variables not used in tox)
    问题 我可以在我的 travis 构建日志中看到 env 变量已正确导出: Setting environment variables from .travis.yml $ export K_API_KEY=[secure] $ export K_PRIVATE_KEY=[secure] $ export TOXENV=py27 但是,在我使用基本 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% |################################|
  • travis secure env variables not used in tox
    I can see in my travis build log that env variables are exported correctly : Setting environment variables from .travis.yml $ export K_API_KEY=[secure] $ export K_PRIVATE_KEY=[secure] $ export TOXENV=py27 However they aren't picked in my tests which use a basic config.py file that just should get the env variables this way (API_KEY = os.environ['K_API_KEY']), see relevant travis log: $ 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
  • .coveragerc unable to locate files I want omitted
    I am using tox to automatically run my tests using pytest and pytest-cov plugin. However, I'm getting coverage reports for the files I omitted in .coveragerc: (env) alex@smartalex-pc:~/.repos/codelib/github/project$ tox [...] ../../../tests/test_module1.py::test_func PASSED [ 3%] [...] ../../../tests/test_module2.py::test_func PASSED [100%] ----------- coverage: platform linux, python 3.6.7-final-0 ----------- Name Stmts Miss Cover -------------------------------------------------------------------------------------------------------------------------- /home/alex/.repos/codelib/github/project/
  • pip成功安装软件包,但在命令行中找不到可执行文件(pip installs packages successfully, but executables not found from command line)
    问题 我正在使用Mac OS X Yosemite版本10.10.3。 我在http://johnlaudun.org/20150512-installing-and-setting-pip-with-macports/中使用macport安装了python2.7和pip 我可以成功安装软件包并将其导入我的python环境和python脚本中。 但是,找不到与可以从终端中的命令行调用的软件包相关联的可执行文件。 有谁知道可能出什么问题了? (下面有更多详细信息) 例如,按照http://wiki.ros.org/jade/Installation/Source中的指示安装名为“ rosdep”的软件包时 我可以运行: sudo pip install -U rosdep ,它安装没有错误,并且相应的文件位于/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages 但是,如果我尝试运行: sudo rosdep init ,则会出现错误: "sudo: rosdep: command not found" 这不是程序包特定的错误。 对于在计算机上使用pip安装的任何软件包,我都会得到此信息。 我什至尝试添加 /opt/local/Library/Frameworks
  • 智慧交通信息服务平台产品解决方案
    1.1. 概述 在用户需求的基础上,通过对城市公安交通指挥系统各技术子系统的功能进行梳理、分类,根据GA/T445-2010 《公安交通指挥系统建设技术规范》、GAT1146-2014《公安交通集成指挥平台结构和功能》要求的功能和我公司自行拓展的功能,将城市公安交通管理的业务应用划分为五大核心平台,即智能交通管控平台、交通信息服务平台、交通运维管理平台、交通地理信息平台和交通信息资源平台,如下表所示: 表 4‑1核心业务平台及功能 序号 功能 业务平台 1 监视道路交通状况 智能交通管控平台 日常组织与管控,指挥、协调交通安全保卫工作 2 应急指挥调度、组织协调、决策支持和执行监督 3 城市内多级公安交通指挥系统协调控制 4 GIS基本显示、GIS基本操作、GIS基本编辑和GIS地图查询功能 交通地理信息平台 5 地图元素统计、地图打印输出、地图定位、地图切割等 6 将交通设备设施、交通状态、交通路径等在GIS地图上进行标绘 7 采集公安交通管理信息 交通信息服务平台 8 发布道路交通管理信息 9 管理交通设备设施 交通运维管理平台 10 系统应用运维监测 11 配置警力资源,实行警务考核 12 用户权限管理、数据字典及系统参数管理等 13 交通信息的采集、存储、分析、交换 交通信息资源平台 1)智能交通管控平台 作为公安交通指挥中心核心应用平台,以总队、支队、大队
  • Why are most of my project's Django files missing from the PyTest Coverage report?
    I'm running pytest-cov and pytest-django using tox. I have a very simple tox.ini file with limited omit files. The problem is when I run pytest using tox -e unit, I get a limited Coverage report: ---------- coverage: platform darwin, python 3.7.4-final-0 ----------- Name Stmts Miss Cover Missing ---------------------------------------------------------------------------- components/__init__.py 0 0 100% components/client/__init__.py 0 0 100% components/client/admin.py 27 0 100% components/client/factories.py 57 0 100% components/client/models.py 62 0 100% components/controller/__init__.py 0 0