2012-04-04 5 views
-2

私の割り当ての一部は、各関数のテストを作成することです。これはちょっと長いものですが、私はとても混乱しています。この関数の下にリンクを置くと、どのように見えるかを見ることができます
最初のコードは非常に長いためです。全体のコードHERESに割り当てのためのテストケースの書き方

def load_profiles(profiles_file, person_to_friends, person_to_networks): 
    '''(file, dict of {str : list of strs}, dict of {str : list of strs}) -> NoneType 
    Update person to friends and person to networks dictionaries to include 
    the data in open file.''' 

    # for updating person_to_friends dict 
    update_p_to_f(profiles_file, person_to_friends) 
    update_p_to_n(profiles_file, person_to_networks) 

http://shrib.com/8EF4E8Z3、私はmainblockを通してそれをテストし、それが動作します。 これは、テキストファイル(profiles_file)我々は、我々はそれらを変換するために使用していることを提供された次のとおりです。 http://shrib.com/zI61fmNP

私は鼻から、このためのテストケースを実行するにはどうすればよい、ちょっとテスト結果の何がありますか?それとも十分に具体的ではないのですか?

輸入鼻 輸入a3_functions

デフ

場合 == 'メイン' test_load_profiles_:私はこれまで、私は知らなかったことを行ってきました ) nose.runmoduleを(どのようなI関数をテストできます。

+0

はい、あなたは十分に具体的ではありません。テストケースは、プログラムに入力できるデータの例です。出力が正しく、プログラムが失敗しないかどうかを確認する必要があります。テストケースを実行するには、単に 'profiles_file'のようないくつかのファイルを作成し、プログラムを実行してください。それが動作するかどうかを確認します。さまざまな種類のファイルを異なるデータで作成し、それらがすべて機能するかどうかを確認します。そのデータについて何も知らないときに実行する必要のあるテストケースを確認するのは難しいです。 – jamylak

+0

ああ、あまりにも多くのデータがあるので私はここにそれをすべてコピーすることはできません。そして、人々はそれを読むのを邪魔します。これらのタイプのデータをテストすると、あなた自身のテキストを作成する必要がありますか? – xevaaa

+0

はい、独自のファイルを作成するか、プログラムが受け入れる入力を作成します。お使いのプログラムがすべての場合に対応しているかどうかを確認するために考えられるほとんどすべての異なるタイプのものを試してみてください。 – jamylak

答えて

1

これまでに書いたコードは、「mycode」というモジュールにあると仮定します。

testmycodeという新しいモジュールを作成します。あなたは(mycode)をテストしたいモジュールをインポートし、そこでは

(すなわちtestmycode.pyと呼ばれるPythonのファイルを作成する)

testupdate()という関数を書きます。

この機能では、最初に有効であると予想されるテキストファイル(file.write)を書き込みます。次に、update_p_to_fを更新します。 assertを使用して、期待どおりの動作をしたことを確認します。これは、テキストファイルを読み込むためのテストです。

次に、コードにファイルへの書き込みを許可するtestupdate_write()という2番目の関数を記述し、次に書き込んだものが正しいことを確認します。

はtestmycodeをロードし、テストを開始し、それが見つかったすべての機能を実行する

nosetests -sx testmycode.py 

(コマンドライン上で)を使用し、テストを実行します。

+0

それはパラメータとしてtxtファイルを取るので、これは私がdiffテキストファイルを作成するだけでそれをテストする必要があるのですか? – xevaaa

+0

「差分」によって異なる場合は「はい」です。この考え方は、テストする機能のさまざまな側面をカバーして、コードのすべての行が期待どおりに機能することを確認することです。 – j13r

0

プログラムの全体的な出力が正しいこと、およびプログラムの個々の部分が正しいことをテストしたいと思うかもしれません。

  • @ j13rでは、完全実行のためにプログラムの全体的な正確性をテストする方法についてすでに説明しました。
  • 4つのヘルパー機能があります。これらのテストを個別に記述することができます。

コード全体をテストするだけの場合よりも、より多くの、より具体的な方法で各部分をテストできるので、小さなコードをテストすると便利です。

unittestモジュールは、テストを実行するためのフレームワークです。

+0

個々のテストのみを実行するためにnoseを使用することができます。nosetests -sx testmycode.py:testupdate – j13r

+0

私はヘルパー関数のための別個のファイルも作成する必要がありますか?または、そのすべてをその下にある1つの関数の下に含めることができますか? – xevaaa

関連する問題