我正在尝试在我的项目中使用毒性自动化测试。但我无法弄清楚使用 tox 时 python 文件中 test_methods 的日志或打印去了哪里。我还对整个 tox 目录进行了 grep 查找日志,但找不到它。
问题
1)如何在tox中配置日志目录?
2)日志的默认配置是什么?
有指向文档和示例的指针吗?
我的 tox.ini 文件
[tox]
minversion = 1.6
skipsdist = True
[testenv]
skip_install = True
setenv =
VIRTUAL_ENV={envdir}
deps = -r{toxinidir}/test-requirements.txt
passenv = LANG
[testenv:test]
commands = ./test.sh --slowest --testr-args='{posargs}'
Run Code Online (Sandbox Code Playgroud) 我一直在使用pytest-mock库来模拟 pytest。当我尝试使用tox命令运行测试时,出现以下错误:
...
tests/test_cli.py ....EEEE
...
file /path/to/test_cli.py, line 63
def test_cli_with_init_cmd_fails_with_db_error(runner, mocker, context):
E fixture 'mocker' not found
> available fixtures: cache, capfd, capfdbinary, caplog, capsys, capsysbinary, context, cov, doctest_namespace, fs, monkeypatch, no_cover, pytestconfig, record_property, record_testsuite_property, record_xml_attribute, recwarn, requests_mock, runner, tmp_path, tmp_path_factory, tmpdir, tmpdir_factory
> use 'pytest --fixtures [testpath]' for help on them.
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从 venv 中直接使用 pytest 运行测试时,一切都按预期运行。
$ py.test --cov esmigrate --cov-report term-missing
...
platform linux -- Python 3.8.5, pytest-6.1.1, py-1.9.0, pluggy-0.13.1
rootdir: /path/to/project/root, …Run Code Online (Sandbox Code Playgroud) 我开始使用 Pipenv 来替换pip freeze > requirements.txt并获得对第三方依赖项的一些更高级的控制。我所有的新代码都是用 Python 3.8 完成的
问题是,当我使用toxPython 2.7 验证我的代码时,pipenv检查其中pipfile.lock包含 Python 3.8 使用的哈希值,导致安装失败。如何配置tox从头开始创建新环境而不使用 pipfile 锁中的哈希值?
我的点文件:
[[source]]
url = "https://pypi.org/simple"
verify_ssl = true
name = "pypi"
[packages]
jinja2 = "*"
pandas = "*"
python-docx = "*"
docxtpl = "*"
numpy = "*"
af-design-report = {path = ".", editable = true}
[dev-packages]
flake8 = "*"
coverage = "*"
tox = "*"
pytest = "*"
pytest-coverage = "*"
pytest-flake8 = …Run Code Online (Sandbox Code Playgroud) 毒物:https: //tox.wiki/en/latest/
我想了解这两种选择的界限。
我知道预提交会创建一个 py 环境 - 与 tox 相同。对我来说,他们的架构看起来有点相似。
有些人将它们结合使用...... pre-commit 不能做什么,tox 可以?我看到了一些示例,其中通过 CI 管道期间的预提交,您可以运行单元测试等。
哪一个最适合集成到 CI 构建中?
我的测试需要psycopg2和lxml,但是当我尝试通过tox将它安装在virtualenv中时,由于缺少pg_conf或其他依赖项而失败.
我找到了bootstrap脚本的这个解释:http://www.virtualenv.org/en/latest/index.html#bootstrap-example
如何向tox的virtualenv添加引导脚本?你知道我关注的任何好例子(lxml和psycopg2)吗?
我正在使用Tox来检查我正在开发的系统在安装在新环境中时表现良好(+完整性检查setup.py文件).但是,系统使用memcached服务器,理想情况下我想为每次Tox运行生成一个新服务器.
是否有一种首选的方法在运行测试之前启动程序(之后关闭它们)或者我是否需要编写自定义运行程序?
编辑:测试运行器是py.test
我正在尝试使用最新版本的setuptools开发一个python程序.但每次我的构建失败时都会显示以下消息:
$ tox -e $TOX_ENV
GLOB sdist-make: /home/travis/build/kartoch/myapp/setup.py
py26 create: /home/travis/build/kartoch/myapp/.tox/py26
py26 inst: /home/travis/build/kartoch/myapp/.tox/dist/myapp-0.1.0.zip
ERROR: invocation failed, logfile: /home/travis/build/kartoch/myapp/.tox/py26/log/py26-1.log
[...]
Unpacking ./.tox/dist/myap-0.1.0.zip
Running setup.py (path:/tmp/pip-P4VhFx-build/setup.py) egg_info for package from file:///home/travis/build/kartoch/myapp/.tox/dist/myapp-0.1.0.zip
The required version of setuptools (>=5.4.1) is not available,
and can't be installed while this script is running. Please
install a more recent version first, using
'easy_install -U setuptools'.
(Currently using setuptools 3.6 (/home/travis/build/kartoch/myapp/.tox/py26/lib/python2.6/site-packages))
Complete output from command python setup.py egg_info:
Run Code Online (Sandbox Code Playgroud)
到目前为止,问题是:
任何的想法 ?
我正在使用以下'.travis.yml'启动我的测试:
language: python
env: …Run Code Online (Sandbox Code Playgroud) 我对Gitlab和Gitlab CI比较陌生(实际上是整个CI的事情),我已经在同一台机器上成功设置了我的Gitlab服务器和Gitlab CI服务器(很好,因为缺少备用服务器,而且几乎是因为我们的团队是在整个CI事情上还处于"beta"阶段).
我们现在有两个项目,一个角度项目(作为Web客户端)和一个烧瓶项目(作为Web服务).我已经在Gitlab和Gitlab CI中成功设置了我们的角度项目(效果很好,它运行我们的测试并完全构建脚本).
但是现在我也想设置我们的烧瓶项目,所以我们也可以应用持续集成,并且用于tox运行我们的测试脚本等(gulp用于我们的角度项目).
这是我们非常基本的tox.ini:
[tox]
skipsdist = True
envlist = py27
[flake8]
max-line-length = 79
exclude = venv, .tox
max-complexity = 10
[testenv]
deps=-rrequirements/testing.txt
changedir=tests
commands=py.test
Run Code Online (Sandbox Code Playgroud)
在我们的Gitlab CI Jobs中,我只是放在tox那里,因为我在我的开发服务器上执行的所有操作(这个设置在我的开发机器上工作正常,tox即使我不在运行中也只是运行),但我继续这样做运行此命令时,我的Gitlab CI上的权限被拒绝错误(见下文)
gitlab-ci-multi-runner 0.3.3 (dbaf96f)
Using Shell executor...
Running on hikari...
Fetching changes...
Removing .tox/
Checkouting 8325a2a2 as master...
tox
py27 create: /home/gitlab_ci_multi_runner/tmp/builds/runner-b0fcd933- project-5-concurrent-0/gitlab.amici.com.ph/hris/xi-flask-starter-kit/.tox/py27
py27 installdeps: -rrequirements/testing.txt
ERROR: invocation failed (errno 13), args: [local('/home /gitlab_ci_multi_runner/tmp/builds/runner-b0fcd933-project-5-concurrent- 0/gitlab.amici.com.ph/hris/xi-flask-starter-kit/.tox/py27/bin/pip'), 'install', '-rrequirements/testing.txt'], cwd: /home/gitlab_ci_multi_runner /tmp/builds/runner-b0fcd933-project-5-concurrent-0/gitlab.amici.com.ph …Run Code Online (Sandbox Code Playgroud) 我目前的工作流程是在Travis CI上测试github PRs和Builds,使用tox测试pytest并将报告覆盖率报告给codeclimate.
travis.yml
os:
- linux
sudo: false
language: python
python:
- "3.3"
- "3.4"
- "3.5"
- "pypy3"
- "pypy3.3-5.2-alpha1"
- "nightly"
install: pip install tox-travis
script: tox
Run Code Online (Sandbox Code Playgroud)
tox.ini
[tox]
envlist = py33, py34, py35, pypy3, docs, flake8, nightly, pypy3.3-5.2-alpha1
[tox:travis]
3.5 = py35, docs, flake8
[testenv]
deps = -rrequirements.txt
platform =
win: windows
linux: linux
commands =
py.test --cov=pyCardDeck --durations=10 tests
[testenv:py35]
commands =
py.test --cov=pyCardDeck --durations=10 tests
codeclimate-test-reporter --file .coverage
passenv =
CODECLIMATE_REPO_TOKEN
TRAVIS_BRANCH
TRAVIS_JOB_ID
TRAVIS_PULL_REQUEST …Run Code Online (Sandbox Code Playgroud) 我想使用setup.py作为软件包的权限来安装进行测试,使用extra_requires完成,如下所示:
setup(
# ...
extras_require={
'test': ['pytest', ],
},
)
Run Code Online (Sandbox Code Playgroud)
Tox似乎只能从requirements.txt文件安装,它只是意味着在测试之前快照需求的步骤(我不知道如何自动执行)或者将测试依赖项复制到tox文件中,这就是我所有的我想避免.一个邮件列表帖子建议tox.ini应该是测试依赖项的权限,但我不希望将tox完全插入到项目中.
tox ×10
python ×8
pytest ×2
setup.py ×2
travis-ci ×2
virtualenv ×2
build ×1
code-climate ×1
gitlab ×1
gitlab-ci ×1
pipenv ×1
pre-commit ×1
psycopg2 ×1
python-3.x ×1
setuptools ×1
testing ×1