💡
この記事は Middleman 時代に書いた古いものです。記録のため、astro-notion-blog に移行していますが、あまり参考にしないでください。
パッケージの作成
今回作成するパッケージの名前は hkob_pyimage という名前した.Git で管理する手前,python であることがわかる名前にした.Python のファイルは全て,ホーム直下に python3 というフォルダを作成し,その下で様々な処理をすることにした.これまで作成してきた画像処理クラスを参考に,作成するクラスは MonoImage と ColorImage という二つのクラスにすることにした.まずは,MonoImage を作成してみる.
-
python3/hkob_pyimage フォルダを作成する.
mkdir -p $HOME/python3/hkob_pyimage; cd $HOME/python3/hkob_pyimage
-
$HOME/python3 フォルダ以下のファイルを import できるように PYTHONPATH を設定する.fish の場合には,.config/fish/config.fish に以下のように記述する.
# Python set -x PYTHONPATH $HOME/python3 $PYTHONPATH
-
tests フォルダを作成する.
mkdir -p tests
-
パッケージを import する時に実行される __init__.py を作成しておく.ここでは,numpy パッケージと MonoImage クラスを import するように記述しておく.
import numpy as np from .mono_image import MonoImage
テストの設定
-
テストは nose2 を利用するので,pip3 でインストールする.
$ pip3 install nose2 Collecting nose2 Downloading https://files.pythonhosted.org/packages/1b/c5/d5fcd60f5bf8af1e320fde832d7965933581a9b21b0d1b29bbe2208f4403/nose2-0.8.0.tar.gz (142kB) 100% |████████████████████████████████| 143kB 4.9MB/s Requirement already satisfied: six>=1.7 in /usr/local/lib/python3.7/site-packages (from nose2) (1.12.0) Collecting coverage>=4.4.1 (from nose2) Downloading https://files.pythonhosted.org/packages/be/88/7e5e548329eda1f003b3ff34e57ba6b2b1f8b8983043e99a0ecf58ae0a06/coverage-4.5.2-cp37-cp37m-macosx_10_13_x86_64.whl (180kB) 100% |████████████████████████████████| 184kB 7.9MB/s Building wheels for collected packages: nose2 Running setup.py bdist_wheel for nose2 ... done Stored in directory: /Users/hkob/Library/Caches/pip/wheels/ad/03/66/03584cefa1811dc9bd20060c5db0ba2e6daaee8c91c65df4e5 Successfully built nose2 Installing collected packages: coverage, nose2 Successfully installed coverage-4.5.2 nose2-0.8.0
-
nose2.cfg をこのディレクトリに作成する.
[unittest] plugins = nose2.plugins.layers
-
システムにインストールしていた chokidar-cli でテスト及び実装のウオッチを行う. 参考: chokidar-cliのファイル更新監視が速い
$ chokidar "**/*.py" -c 'nose2 -v' Watching "**/*.py" ..
tests/test_mono_image.py の記述
-
tests/test_mono_image.py に MonoImage の import を記述する.
from nose2.tools import such from hkob_pyimage import MonoImage
-
保存すると先ほどの chokidar の画面にテスト結果が表示される.mono_image module がないと言われている.
add:tests/test_mono_image.py test_mono_image (nose2.loader.ModuleImportFailure) ... ERROR ====================================================================== ERROR: test_mono_image (nose2.loader.ModuleImportFailure) ---------------------------------------------------------------------- ImportError: Failed to import test module: test_mono_image Traceback (most recent call last): File "/usr/local/lib/python3.7/site-packages/nose2/plugins/loader/discovery.py", line 201, in _find_tests_in_file module = util.module_from_name(module_name) File "/usr/local/lib/python3.7/site-packages/nose2/util.py", line 77, in module_from_name __import__(name) File "/Users/hkob/python3/hkob_pyimage/tests/test_mono_image.py", line 2, in <module> from hkob_pyimage import MonoImage File "/Users/hkob/python3/hkob_pyimage/__init__.py", line 2, in <module> from .mono_image import MonoImage ModuleNotFoundError: No module named 'hkob_pyimage.mono_image' ---------------------------------------------------------------------- Ran 1 test in 0.000s FAILED (errors=1)
-
mono_image.py に MonoImage class の記述のみを行う.
import numpy as np class MonoImage: pass
-
保存するとテスト結果が更新される.MonoImage が用意されたので,エラーがなくなった.まだテストは書いていないので,0 tests であるが,MonoImage の import までは確認できた.
add:mono_image.py ---------------------------------------------------------------------- Ran 0 tests in 0.000s OK
長くなったので今日はここまで.