Pythonのテストコードを実行する際に、複数のPythonバージョンで動作確認したい時があり、toxの設定が便利だったので備忘メモ。
インストール
$ pip3 install tox
tox.ini
設定ファイルにlintとtestの設定を記載できます。
波括弧で複数バージョンの指定が可能です。
また、lintのルールをflake8の引数で変更可能です。
[tox]
envlist = py3{7,8,9}-{lint,test},coverage-report
[testenv]
setenv =
COVERAGE_FILE = .coverage.{envname}
changedir = {toxinidir}/tests
install_command = \
pip install \
--index-url=https://xxx.xxx.xxx:8000/xxx \
--trusted-host=xxx.xxx.xxx {opts} {packages}
deps =
pytest
pytest-cov
coverage
mock
commands =
pytest --cov . {posargs}
[lint]
changedir = {toxinidir}
skip_install = True
deps =
readme_renderer
flake8
flake8-import-order
pylint
mock
pytest
commands =
flake8 --import-order-style=pep8 --max-complexity=11 --max-line-length=120 <モジュールのディレクトリ名> (setup.py, testsなども指定可能)
[testenv:py37-lint]
skip_install = {[lint]skip_install}
changedir = {[lint]changedir}
deps = {[lint]deps}
commands = {[lint]commands}
[testenv:py38-lint]
...py37と同様
[testenv:py39-lint]
...py37と同様
実行方法
PRなどをトリガーに、CICDのパイプラインで各Pythonバージョンのコンテナを起動して、テストを自動実行するようにするとGood😎
#lint $ tox -e py38-lint # test $ tox -e py38-test