前回のエントリでは、Marvinを用いて、CloudStackの結合テストを実行する方法について解説しました。その際、テストの実行環境としてUbuntuを使用しましたが、普段自分はWindows上のIntelliJ IDEA Community Editionを使ってCloudStackのコードを開発している為、テストコードの開発、実行環境も出来ればWindowsに揃えたいところです。このエントリでは、Marvinのテストコード開発環境をPyCharmを使ってWindows上に構築した際の手順を解説します。

ツールのインストール

PyCharm

image

IntelliJ(のCommunity Edition)は、Java開発用のIDEですが、IntelliJから派生したPython開発用のIDEとして、PyCharmというものがあります。このPyCharm、IntelliJと同じく、Community Editionとしてフリー版が用意されており、今回はこれを利用してMarvinのテストを記述する方法を解説していきます。

http://www.jetbrains.com/pycharm/ からダウンロードできます。

Java

PyCharmの実行は、Javaが必要であり、また、後半の手順で、Marvinをコンパイルする際にも必要になるので、インストールしましょう。

http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html からダウンロードできます。

インストールが出来たら、忘れずにPATHを通しておきましょう。

MinGW

後半の手順で、MarvinをMavenでコンパイルする際に、bashが必要になります。MinGWなどをインストールしましょう。

http://www.mingw.org/ からダウンロードできます。

Python for Windows

PyCharmは、あくまでもIDEであり、Pythonの実行環境は提供しません。Python for windowsを別途インストールしましょう。

http://www.python.org/downloads/ からダウンロードできます。

インストールが出来たら、忘れずにPATHを通しておきましょう。

setuptools、pip

Pythonのパッケージ管理システムのsetuptools、pipをインストールしましょう。setuptoolsをセットアップするためのPythonスクリプトが配布されていますので、ダウンロードの上実行し、setuptoolsがパッケージを配置するC:\Python27\ScriptsにPATHを通した上でeasy_installコマンドからpipをインストールしましょう。

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
python ez_setup.py

# ここでC:\Python27\ScriptsをPATHに設定

easy_install pip

Marvinが依存する外部ライブラリ

続いてはMarvinが依存する外部ライブラリです。mysql-connector-pythonと、pycryptoが必要ですので、それぞれインストールしましょう。

http://dev.mysql.com/downloads/connector/python/

http://www.voidspace.org.uk/python/modules.shtml#pycrypto

Marvin

そして本命のMarvinのインストールです。こちらは、Mavenでビルドしてパッケージを作成し、それを先ほどインストールしたpipでインストールするという流れになります。

まずは、CloudStackの開発に使用しているIntelliJで、MavinをMavenでビルドし、パッケージを作成しましょう。(IntelliJによるCloudStackの開発環境の構築は、CloudStack開発ことはじめ (1)開発環境のセットアップ –IntelliJ IDEA Community Editionのススメ –をご覧ください。)

image

作成されたパッケージは、tools/marvin/distディレクトリ以下に配置されます。

以下のように、pipコマンドでインストールを行いましょう。インストールを行うと、依存するパッケージ(nosetests)なども同時にインストールされます。

pip install tools/marvin/dist/Marvin-0.1.0.zip

以上で、一連のインストールは完了です。

PyCharmのセットアップ

プロジェクトの作成

続いて、PyCharmのセットアップを進めていきましょう。まずは、CloudStackのPyCharmプロジェクトの作成です。IntelliJでCloudStackの開発をする際に使用しているプロジェクトをそのまま使いたいところですが、使用しようとするとプロジェクトファイルが競合してしまいます。仕方がないので、別のディレクトリにレポジトリをクローンしてそのレポジトリをインポートする形で別のプロジェクトとして開発を進めましょう。

git clone https://github.com/apache/cloudstack.git cloudstack_py

プロジェクトのテストランナーの変更

CloudStackの結合テストは、nosetestsで書かれていますので、PyCharmで結合テストを実行するには、プロジェクトのテストランナー設定を変更する必要があります。
ProjectのSettingsダイアログを開き、Python Integrated Tools->Default test runnerと項目を辿り、”Notestests”に設定しましょう。

image

テストコード実行時のパラメータの変更

続いて、nosetestsのオプションのデフォルトパラメータの変更を行い、nosetestsにmarvinプラグイン、marvinのconfigが読み込まれるようにしましょう。

--with-marvin --marvin-config=<MarvinのConfigへのパス> --load

 

テストの実行

テストの実行は、テストコードのコンテキストメニューから開始できます。
image

 

PyCharmに統合されたテストランナーの表示

テスト結果は、PyCharmに統合されたテストランナーが進捗含めわかりやすく表示してくれます。
image

PyCharmでのデバッグ実行

続いては、デバッグ実行です。ブレークポイントを打ち、デバッグ実行することで、コードの実行を任意の箇所で止めながらデバッグすることが可能です。

image
勿論、操作感は、IntelliJやRubyMineと同じです。その場で書いたコードを現在のコンテキストで評価する、Expression Evaluationウィンドウも健在です。いいですね。

以上、PyCharmでMarvinによるCloudStackのテストコードをデバッグする方法の紹介でした。今回のエントリが、テストコード開発を始めるきっかけになれば幸いです。

 

 

なお、自分は触ったことはないですが、Windows上で動作するPython IDEのもう一つの選択肢として、Python Tools for Visual StudioというIDEもあります。Visual Studioというとお高そうなイメージがありますが、こちらは無償です。PyCharmと比較すると、nosetestsのテストランナーが統合されてない点は劣りますが、一方でPyCharm Community Editionでは提供されていない、リモートデバッグ機能があるなど、優れた点もあります。こちらも、検討してみると面白いかもしれません。
image

Trackbacks : 13

Trackback URL for this entry
http://blog.sharplab.net/blog/2014/03/04/cloudstack%e9%96%8b%e7%99%ba%e3%81%93%e3%81%a8%e3%81%af%e3%81%98%e3%82%81-5%e3%83%86%e3%82%b9%e3%83%88%e3%82%b3%e3%83%bc%e3%83%89%e9%96%8b%e7%99%ba%e7%92%b0%e5%a2%83%e3%82%bb%e3%83%83%e3%83%88/trackback/

Listed below are links to weblogs that reference this entry

トラックバック from in ground pool pricing 14-07-23 12:18:14 UTC

in ground pool pricing…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from roof sheeting 14-10-05 23:41:23 UTC

roof sheeting…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from Bligoo.Es 14-10-10 14:12:39 UTC

Bligoo.Es…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from mirincondeocio.bligoo.cl 14-10-11 09:20:47 UTC

mirincondeocio.bligoo.cl…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from diamond engagement ring shopping 14-10-18 00:32:08 UTC

diamond engagement ring shopping…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from mprofit.zendesk.com 14-10-18 11:29:54 UTC

mprofit.zendesk.com…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from newshutt.com 14-10-19 16:55:58 UTC

newshutt.com…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from diamond ring cleaner steamer 14-10-19 21:44:10 UTC

diamond ring cleaner steamer…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from homebase discount code 14-10-20 12:26:22 UTC

homebase discount code…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from グッチ アウトレットモール 14-12-05 03:04:37 UTC

グッチ アウトレットモール…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from トリーバーチ バッグ 激安 14-12-05 12:37:26 UTC

トリーバーチ バッグ 激安…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

トラックバック from middle grade fiction series authors 15-01-13 23:41:56 UTC

middle grade fiction series authors…

CloudStack開発ことはじめ (5)テストコード開発環境セットアップ -PyCharmでMavinのテストコード開発- – SharpLab….

ピンバック from 404 Not Found. - SharpLab. 15-06-13 09:57:10 UTC

[…] […]