Python学習【365日チャレンジ!】189日目のマスターU(@Udemy11)です。
半沢直樹がおもしろすぎて、思わず過去シリーズをイッキ見してしまいました。
2週間無料体験が付いているので、半沢直樹を見るだけなら無料で見れちゃいますよ!
半沢直樹以外にも魅力的なドラマや映画も見れちゃうので、ぜひ一度無料体験してみてはどうでしょう?
ハマりすぎてPython学習がおろそかにならないように気をつけないといけませんね。
それでは、今日もPython学習をはじめましょう。
昨日の復習
昨日は、setuptoolsを使ってテストを実行する方法を学習しました。
以前作成した対話アプリJarvisでsetuptools
を使ってunittestを実行し、配布するパッケージにもテストファイルを添付することができました。
テストファイルもメインファイルと同じ階層にすることで、どのファイルのテストファイルなのか簡単にわかりましたね。
setuptools
でunittestを実施する方法はこちらの記事を参考にしてください。
今日は、setuptoolsでpytestのテストを実行する方法を学習します。
pytest-runner
setuptoolsを使ってpytestを実行するにはpytest-runner
をインストールする必要があります。
pip install pytest-runner
上記コマンドをターミナルから実行してpytest-runner
をインストールします。
次にsetup.py
が実行されたときに最初に読み込まれるコンフィグファイルを作成します。
setup.cfg
新しくsetup.cfg
という名前のファイルを作成し、次のように記述します。
[aliases]
test=pytest
これでターミナルからpython setup.py test
を実行すれば、テストはpytestで実行されます。
実行結果
Pycharmのバージョンにもよるかもしれませんが、pytestでテストを実行した場合は、次のフォルダ・ファイルが作成されるようです。
また、ターミナルでコマンドpython setup.py sdist
を実行すれば、昨日同様、テストファイルが入ったtests
フォルダも一緒に含まれたパッケージを作ることができます。
続いてsetup.cfg
とsetup.py
を少し変更したやり方もあります。
setup.cfgを変更
先程作ったsetup.cfg
に少しコードを付け加えます。
[aliases]
test=pytest
[tool:pytest]
python_files = tests/*
tests
フォルダにあるテストファイルをパッケージに入れるコードを加えました。
次にsetup.py
を変更します。
setup.pyを変更
昨日のコードで最後に記述していたtest_suits='tests'
に変えてtests_require=['pytest']
を追加します。
from setuptools import setup, find_packages
setup(
name='jarvis',
version='1.0.0',
packages=find_packages(),
package_data={'jarvis':['templates/*.txt']},
url='http://udemyfun.com',
license='Free',
author='MasterU',
author_email='master@udemyfun.com',
description='First package',
tests_require=['pytest'],
)
変更後、ターミナルからpython setup.py test
を実行すれば、先程と同じように、pytestでテストが実行された結果が返されます。
試すことが大切
かなりしつこく言ってますが、やはりどんどん試すことが大切です。
今回の学習では、最初にかなりつまづきました。
酒井さんの講座の中では、特に何もインストールしなくても普通にエラーもなく進んでいたのですが、何度やっても次のエラーが出てテストができませんでした。
error: invalid command 'pytest'
改めて、レクチャーの質問や紹介されているページを調べてみると、pytest-runner
をインストールするとうまくいくみたいだったので、やってみたところうまく動いたというわけです。
さらに、setup.cfg
のコードやsetup.py
のコードも色々と試しているうちに、違う方法でもできることを発見したわけです。
とはいえ、これが正しいかどうかはわからないのですが、とりあえずうまく動いているので、間違ってはいないと思います。
試すことでわからないことも少しずつ分かっていくので、ぜひ色々と試してみてください。
私が今Pythonを学習しているのは、こちらの講座です。
それでは明日も、Good Python!