2016-06-27 12 views
1

osモジュールメソッドをPythonでどのようにテストしますか?たとえば、os.mkdirの使用をどのようにテストしますか?テストメソッド

def create_folder(self): 
    os.mkdir("/parentFolder/newFolder") 

このメソッドをテストするために使用できるものは何ですか?このメソッドは、フォルダを確認

  • がフォルダに

+2

あなたはそれをテストしないで、あなたのプログラムとの相互作用をテストします*。 'os.mkdir'を模倣して、それが適切に呼び出されていることを確認してください。 – jonrsharpe

+0

@jonrsharpeどうやってやるの?関数の他のテストで関数が働いたと仮定するか、モックオブジェクトを使って提案された答えのようにしますか? – SJC

+1

ユニットテストの観点から、はい。 'os.mkdir'自体が動作しているかどうかをテストするポイントはありません。なぜなら、他の' os'メソッドとの(回答が提案したように)確認できるだけなので、どのポイントを信頼するのかを決めることができるからです。単体テストのどこかで、 'create_folder'を完全に模倣します。これは、テストされ信頼できるユニットであるからです。また、特定のフォルダが作成されていて、全体的な機能が動作するかどうか(たとえば、ゲームを保存している場合は、ゲームを後で再度読み込むことができるかどうかは気にしません)という、より高度な統合テストもあります。 – jonrsharpe

答えて

2

ユニットテストcreate_folderの場合、テストos.mkdirではありません。これは、2つの理由である:

  1. それは外部ライブラリ(この場合は標準ライブラリが、同じサードパーティのライブラリの場合である)の一部であるので、テストスイートによってカバーされるべきですそのライブラリのための;

  2. コードベースの一部であっても、テスト対象ユニットとは別のユニットです。

はさらに、それはこののあなたのテストは、user2393256's answerによって示されるように、おそらく同じ外部ライブラリから他の機能を使用することになることは注目に値します - テストが失敗した場合、あなたはos.mkdirが機能しなかったと結論んかそのos.path.isdirはうまくいきませんでしたか?

テストcreate_folderの観点からは、本当に重要なのは、それはが正しくその機能をに相互作用することです。私はos.mkdirをモックして(例えばunittest.mockなどを使って)、それが適切なパスで呼び出されていることを確認します。また、モックの戻り値や副作用を変更して、不十分なパーミッションやスペースをシミュレートしたり、実際にその環境を設定することなくアプリの応答をテストすることができます。 create_folderを呼び出す機能の他のユニットをテストすると、私はcreate_folderを完全に模倣します。これはテスト済みで信頼できるユニットなのでです。

ユニットテスト以外では、レベルの統合テストを使用すると、アプリケーションのすべての部分が正しく動作することが保証されます。この時点で、全体的な機能をテストします。ファイルを保存してから、のような具体的なものではなく、後でそれを読み込むことができます。

最後に、標準的なライブラリ機能のために、言語自体がテストされていることを確信している必要があります(直接使用していなくても、ワーキング。

0
を作成するフォルダに

  • 不足スペースを作成するために

  • 不十分な権限を作成したようなテストケースを持っているでしょう

    ディレクターyはあなたが

    許可については
    os.path.isdir() 
    

    を使用することができます作成​​されました:それは、その場合には許可

    のためよりも、許しをお願いする方が簡単です

    を言うPythonのイディオムがあり、私フォルダを作成してスローされる可能性のある例外をキャッチしようとします。

  • 関連する問題