ラベル PyScripter の投稿を表示しています。 すべての投稿を表示
ラベル PyScripter の投稿を表示しています。 すべての投稿を表示

2008年8月25日月曜日

PyScripter で UnitTest を自動で生成

PyScripter では UnitTest を作成するとき、対象となるモジュールからテストの雛形を自動で作成してくれる。

 

方法

UnitTest を作成したいモジュールを開き、メニューより Tools > Unit Test Wizard... を選択する。

080825-002

 

テスト対象のメソッドを選択するダイアログが表示されるので、必要なものをチェックする。

080825-003

 

例えば、上記は HtmlTable.py ファイルの HtmlTable クラスのメソッドから UnitTest を作成しようとしている。必要なメソッドを選択した後、 OK ボタンを押すと次のようなコードが自動的に生成された。

#This file was originally generated by PyScripter's unitest wizard

import unittest
import HtmlTable

class TestHtmlTable(unittest.TestCase):

    def setUp(self): 
        pass

    def tearDown(self): 
        pass

    def testsetCell(self):
        pass

    def testtoHtml(self):
        pass

if __name__ == '__main__':
    unittest.main()

unittest.TestCase のサブクラスとしてテスト用のクラス TestHTmlTablle が作成され、中にテスト対象のメソッドに対応したテスト用の空のメソッドが作成されている。 setUp, tearDown メソッドはテストの前処理・後処理で、後二つは先ほど選択したメソッドに対応したもの。

 

ファイルの保存

まず最初に、自動で作成されたテスト用のモジュールをテスト対象と同じディレクトリに保存すること。これをしないでテストを実行しようとすると、次のようなエラーダイアログが表示されてしまう。

exceptions.ImportError: No module named HtmlTable

 

テスト対象のモジュール名

次に、テスト用のメソッドの中でテスト対象のクラスを利用するには、

モジュールの名前.テスト対象のクラス

というように、必ず「モジュールの名前.」を付けること。これを忘れてテストを実行すると、赤い文字で次のように表示される。

TypeError: 'module' object is not callable

はじめこんな初歩的なミスに全然気がつかず悩んでしまった。 ^^;

2008年6月19日木曜日

PyScripter でモジュールを変更した場合、手動でインポート

次の二つのファイルがあるとする。

  • hoge.py
  • piyo.py

hoge.py では、piyo.py の hello() を呼び出す。

from piyo import *
hello()

ここで piyo.py で hello() を定義して、hoge.py を実行すると、 PyScripter (1.9.9.2) ではエラーが表示される。

def hello():
    print "piyo: hello()"

ただし、コマンドラインからの実行はエラーが表示されず問題ない。もちろん、Meadow のシェルコマンドからの実行も OK.

 

対処

080619-1この場合、PyScripter において piyo.py を変更後に、メニューより「Run > import Module」を選択する。これにより piyo モジュールがインポートされ、 hoge.py の実行がうまくいく。

Run > External Run」 ならば、 piyo.py におけるモジュールのインポート操作をしなくても問題ないようだ。

たくさんのモジュールを PyScripter で変更した場合、PyScripter の再起動が早いかな? ^^;

 

参考