概要
予定通りに行けば、Python 3.3 が今月中にリリースされます。
現在は Python2 と Python3 は移行時期で、完全に Python3 に移行するのは難しいタイミングです。しかし、将来確実に Python3 に移行する必要が出てくるため、場合によっては、Python2 と Python3 両方で動作するソースを作成する必要があります。
Python2 と Python3 で動作するソースを書く場合、別バージョンのPythonで同じソースを同時にテストできる「tox」と、テスト結果を詳細に表示してくれる「pytest」を導入すると便利になります。
インストール
pip でインストールできます。
pip install tox
pip install pytest
また、複数のバージョンのPythonでテストする場合は、環境に該当バージョンのPythonをインストールする必要があります。
準備
tox でテストを動作させるには最低限 setup.py と tox.ini が必要です。
まずは setup.py を用意します。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from setuptools import setup
setup(
name='sample',
version='0.0.1',
)
まずは tox.ini を用意します。
# tox.ini
[tox]
envlist =
py26,
py27,
py32,
py33,
[testenv]
deps = pytest
comands = py.test -v tests
実行
実行は tox コマンドで実行できます。
tox
エラーが出た場合の対処
エラーが発生した場合、toxを実行したディレクトリ直下に「.tox/log」が生成されて、ログが出力されます。
ログは比較的詳細に出力されますので、これを見ることで問題を解決することができるでしょう。
Mac OS X の特定の環境では readline 関連のエラーが出るようです。
AssertionError: Filename /path/to/python2.7/site-packages/readline.so
does not start with any of these prefixes
エラー発生箇所のreadline.soをリネームしておくと発生しなくなります。
cd /path/to/python2.7/site-packages/
mv readline.so readline.so-bak
環境によっては tox に関係の無いエラーが発生してしまう場合がありますが、log の出力が結構しっかりしているので、対処は可能ではないかと思います。
テストを書きましょう
あとは、テストを書きましょう。