我正在尝试实现一个完整而干净的测试python包的方法,这个方法符合以下要求:
我用几种方法:nose + pytest,tox + pytest但最近发现,pytest应该能够做到大部分的东西.
主要问题是我无法找到关于何时使用一种方法或另一种方法更好的明确比较.
有人可以解释这些并给出一些用例或这些配置的限制吗?......只是为了清楚说明何时采用某种方法.
最后我想要有这些选项:
quicktest - 在每个提交之前必须在本地运行测试fulltest - 完整测试,在所有可用平台上运行它们,必须在制作新版本之前出于不同的原因,我必须在我的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)
我试过在文件名周围加上引号以及转出星号,但没有成功.
有任何想法吗?
在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) 使用 GitHub actions 矩阵策略,您可以指定您希望代码运行的 python 版本(例如),那么是否需要在 GitHub actions 工作流程中运行 tox?
是否有任何毒素提供了 gh 行动矩阵策略所没有的东西?
谢谢!
我确实有一个复杂的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集成).
我有以下.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环境版本?
我正在使用tox针对不同的Python解释器运行测试.tox发现我对CPython解释器的隐瞒,因为它们位于默认位置.但是,当我下载PyPy for Windows时,它是一个存档,而不是一个安装程序.我应该在哪里放置PyPy/PyPy3以便tox自动找到它们?
我的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 包。一些模块包含嵌入在 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 …
鉴于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