调用形式
nox 通常是在命令行上被调用的:

nox
你还能够通过 Python 解释器调用 nox:

python3 -m nox

列出可用的会话
列出所有可用的会话,包含参数化的会话:

nox -lnox --listnox --list-sessions

运行所有会话
你能够不带任何参数地执行 nox 来运行每个会话:

nox
会话被执行的程序是它们在 noxfile 中呈现的程序。

指定一个或多个会话
默认状况下,nox 将运行在 noxfile 中定义的所有会话。然而,你能够抉择应用--session、-s 或-e 运行特定的一组:

nox --session testsnox -s lint testsnox -e lint

你还能够应用NOXSESSION环境变量:

NOXSESSION=lint noxNOXSESSION=lint,tests nox

nox 将依照指定的程序运行这些会话。

你还能够应用pytest-格调的关键字来过滤测试会话:

nox -k "not lint"nox -k "tests and not lint"

指定参数化的会话
如果你有参数化的会话,例如:

@nox.parametrize('django', ['1.9', '2.0'])def tests(session, django):    ...

那么运行nox --session tests,实际上将运行该会话的所有参数化版本。如果你要应用一组特定的参数化参数运行会话,则能够应用会话名称来指定它们:

nox --session "tests(django='1.9')"nox --session "tests(django='2.0')"

重用虚拟环境
默认状况下,nox 在每次运行时都会删除并从新创立虚拟环境(virtualenv)。通常,对于大多数我的项目和继续集成环境而言,这都是很好的,因为pip的缓存使得重新安装相当快。然而,在某些状况下,在两次运行之间重用虚拟环境是更无利的。应用-r或--reuse-existing-virtualenvs:

nox -rnox --reuse-existing-virtualenvs

如果 noxfile 设置了nox.options.reuse_existing_virtualenvn,你能够在命令行应用--no-reuse-existing-virtualenvs 笼罩 noxfile 的设置。

如果有会话失败,则进行
默认状况下,即便一个会话失败,nox 也将持续运行所有会话。一旦第一个会话失败,你能够应用--stop-on-first-error来使 nox 停止:

nox --stop-on-first-error

如果 noxfile 设置了nox.options.stop_on_first_error,你能够在命令行中应用--no-stop-on-first-error笼罩 noxfile 的设置。

当缺失解释器气节会话失败
默认状况下,nox 将跳过找不到 Python 解释器的会话。如果你心愿 nox 将这些会话标记为失败,你能够应用--error-on-missing-interpreters:

nox --error-on-missing-interpreters

如果 noxfile 设置了nox.options.error_on_missing_interpreters,你能够在命令行中应用--no-error-on-missing-interpreters笼罩 noxfile 设置。

禁止内部程序
默认状况下,对于未在会话的虚拟环境中装置的程序,nox 会收回正告,但最终会容许你运行它。如果 nox 在非显式将external = True 传递给session.run 的状况下,还应用任意内部程序,则你能够应用--error-on-external-run来使它失败:

nox --error-on-external-run
如果 noxfile 设置了nox.options.error_on_external_run,你能够在命令行中应用--no-error-on-external-run笼罩 noxfile 设置。

指定其它配置文件
如果因为某种原因你的 noxfile 没有命名为 noxfile.py ,你能够应用--noxfile 或-f :

nox --noxfile something.pynox -f something.py

将虚拟环境存储在其它目录中
默认状况下,nox 将虚拟环境存储在./.nox中,然而,你能够应用--envdir进行更改:

nox --envdir /tmp/envs

跳过除装置命令外的所有内容
在很多状况下,仅须要 nox 运行装置命令,例如筹备环境作离线测试,或者从新创立用于测试的虚拟环境。你能够应用--install-only跳过 run 命令。

例如,给定这个 noxfile:

@nox.sessiondef tests(session):    session.install("pytest")    session.install(".")    session.run("pytest")

运行:

nox --install-only

将同时运行两个 install 命令,但跳过 run 命令:

nox > Running session testsnox > Creating virtualenv using python3.7 in ./.nox/testsnox > pip install pytestnox > pip install .nox > Skipping pytest run, as --install-only is set.nox > Session tests was successful.

强制非交互行为
session.interactive可用于判断 nox 是在交互式终端(例如一个理论的人在其计算机上运行它)还是在非交互式终端(例如一个间断集成系统)中运行。

@nox.sessiondef docs(session):    ...    if session.interactive:        nox.run("sphinx-autobuild", ...)    else:        nox.run("sphinx-build", ...)

有时,须要强制 nox 将会话视为非交互式的。你能够应用--non-interactive参数来执行此操作:

nox --non-interactive

这会使得session.interactive始终返回 False 。

管制黑白输入
默认状况下,如果你在交互式终端中应用,则 nox 将输入黑白的日志。然而,如果要将stderr重定向到文件,或者不应用交互式终端,或者设置了环境变量NO_COLOR,则 nox 会以纯文本格式输入。

你能够应用--nocolor和--forcecolor标记来手动管制 nox 的输入。

例如,这将始终输入黑白日志:

nox --forcecolor
然而,这将永远不会输入黑白日志:

nox --nocolor

管制命令的具体水平
默认状况下,nox 仅显示失败的命令的输入,当给命令传递了silent = False 时,没有输入。通过将--verbose传递给 nox,无论 silent 参数如何,都会显示所有命令的所有输入。

输入机器可读的报告
你能够通过指定--report以json格局输入报告:

nox --report status.json

Windows
nox 临时性反对在 Windows 上运行。然而,这取决于你的 Windows,Python 和虚拟环境的版本可能会呈现问题。无关更多信息,请参见以下内容:

  • tox issue 260
  • Python issue 24493
  • Virtualenv issue 774
    Windows 上的 Python 二进制文件可通过 Windows 的 Python 启动器(py )找到。例如,通过确定py -3.5 会调用哪个可执行文件,以此来找到 Python 3.5 。如果一个测试须要应用特定的 Python 的 32 位版本,则应应用X.Y-32 作为版本。

从 tox 转化
nox 具备将 tox.ini 文件转换为 noxfile.py 文件的实验性反对。它还不反对 tox 的所有性能,仅用于实现适度转换的大部分机械工作,你可能仍须要对转换后的 noxfile.py 作一些批改。

要应用转换器,请在装置 nox 时附上tox_to_nox:

pip install --upgrade nox[tox_to_nox]
而后,只需在 tox.ini 所在的目录中运行tox-to-nox:

tox-to-nox
这将基于 tox.ini 中的环境创立一个 noxfile.py。一些注意事项:

  • 生成环境 能够工作,然而会被转换为独自的环境。tox-to-nox不够聪慧,无奈将其转换为参数化的会话,然而手动提取通用配置以进行参数化应该很简略。
  • 因为 tox 解析其配置的形式,所有替换项 会在转换时被引入。这意味着你须要用适当的变量替换 noxfile.py 中的动态字符串。
  • 几种不罕用的 tox 选项尚未实现,但有可能实现。如果遇到你认为有用的性能,请提出性能申请(feature request)。

shell 补齐
将适当的命令增加到 shell 的配置文件中,以便在启动时运行。你可能须要重启或从新登录,能力使主动补齐性能失效。

bash

eval "$(register-python-argcomplete nox)"

zsh

# To activate completions for zsh you need to have# bashcompinit enabled in zsh:autoload -U bashcompinitbashcompinit# Afterwards you can enable completion for nox:eval "$(register-python-argcomplete nox)"

tcsh

eval `register-python-argcomplete --shell tcsh nox`

fish

register-python-argcomplete --shell fish nox | .

以上就是本次分享的所有内容,想要理解更多 python 常识欢送返回公众号:Python 编程学习圈 ,发送 “J” 即可收费获取,每日干货分享