私は1つのエンドツーエンドのSelenium統合テストを行っています。これは、各ステップが特定の状態を設定し、データを次のステップに渡すいくつかのステップから構成されています。Python unittestによる統合テスト:粒度を改善する方法?
テストシナリオ:
1. Create item.
2. Assign item to group.
3. Approve item.
...
4. Publish item.
ステップはアトミックではなく、お互いに依存しています。テストクラスはunittest.TestCase
から拡張され、各ステップのメソッドをラップする単一のtest_xyz()
メソッドを含みます。
現在、最終レポートにはラッパーtest_xyz()
メソッドの合否ステータスのみが含まれています。私は、各ステップを「テストステップ」として扱い、テストレポートに別のエントリを持たせたいと思います。
すべてのステップをtest_step1()
,test_step2()
などに変換し、ステップが自己完結型のテストではないため、実行順序とデータ交換を強制するのは間違っています。
特定のメソッドをテストステップとしてマークし、テストレポートに別々のエントリとして表示する方法はありますか?
基本的に、すべての統合テストが失敗したというレポートから、レポートから視覚的なレポートを改善することが基本的に必要です。これはunittest
で達成可能ですか?単体テストのパラダイムに適合するようにコードを編成するのがベストプラクティスでしょうか?
unittest
は、厳密にはユニットテストではないため、統合テストに最適なツールです。 pytestのようなものに切り替えることで、統合テストの意味がより明確になり、「無料」のHTMLレポート生成が可能になるでしょうか? (私は現在、テストを実行すると、対応するnose pluginでHTMLレポートを生成するためにnoseを使用しています。)
それはこの中に記述された他のコードを確認するために私の仕事ですので、それは、これを言うのは難しいのようなものだ、と私は本当に、それを嫌いますしかし...あなたはロボットフレームワークを考えましたか? –
私はdropboxで使用されているpythonバージョンの[capybara.py](https://github.com/elliterate/capybara.py)を簡単に見ましたが、それは非常に文書化されていません。ロボットはより確立されたものであるようです、ありがとう! – ccpizza