【Python】toxで複数のPythonバージョンをテストする
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