理解の自己定義されたスコープのロボットFrameworkのテストライブラリ

  ロボットのフレームワーク、強力なテストライブラリAPIのサポート、ライブラリーの実際のニーズに応じて、ユーザー定義のテストは、インポート後にカスタムライブラリをキーワードに使用することができます。

  クラスインスタンス:カスタムテストライブラリをクラスライブラリであるとき、あなたは質問を考慮する必要があります。クラスライブラリは、内部状態を達成することができますと、これらの状態は、テストケースが誤って別のユースケースは非常にある影響を与えないことを保証するために、そのため、キーワードの実際の行動に影響を与えますので、。キーワードであるか、またはコンストラクタを変更することができました重要。この依存性の挙動は、バグを見つけることは非常に難しい可能性があります。例えば、これらのライブラリを用いて新たなテストケースを追加すると一貫した方法ではありません。

  テストケース間の独立性を確保するためにロボットのフレームワークは、デフォルトでは、各テストケースのための新しいテストデータベースインスタンスを作成します。しかし、これは常に私たちが望む方法ではありません、例えば、時にはあなたは、テストケースを共有する必要がありますとき状態。加えて、これらのライブラリは明らかに新しいインスタンスを毎回作成する必要がする必要はありませんステートレス。テストライブラリのクラスの例としては、によってROBOT_LIBRARY_SCOPE方式の属性を制御するために定義された3つのスコープ

  1.TEST CASE:互いに独立の間の実施例により、各データベースインスタンスのためのテストケースを作成し、それはデフォルトです。

  テストライブラリクラスを作成します。GTest.py

1  クラスGTEST(オブジェクト):
 2  
3      ROBOT_LIBRARY_SCOPE = " テストケース" 
4      カウンタ= 0
 5  
6      デフ __init__ (自己):
 7          GTest.counter + = 1
 8  
9      DEF (自己)カウント:
 10          戻り self.counter、IDを(自己)
コードの表示

   テストスイートlogin.robotを作成します。

1 ***設定***
 2  ドキュメントスイート説明
 3  ライブラリGTest.py
 4  
5 ***テストケース***
 6  試験タイトル
 7      [タグ] DEBUG
 8      {RES} @カウント
 9      ログ多く@ {RES}
 10  
11  TITLE2テスト
 12      [タグ] DEBUG
 13      {RES} @カウント
 14      {RES} @多くのログを
コードの表示

 ユースケースの結果のビューから、GTESTランタイムライブラリを使用して、テストケースの各カウンタ値1によって、およびインスタンスID異なる、SCOPE「テストケース」テストライブラリーは、各テストケースのインスタンスを作成するようにこの構成は実施形態間の相互作用によって厳しい制御シナリオに適しています。

  2.TEST SUITE:各テストスイートのためのテスト・データベース・インスタンスを作成し、すべてのユースケースは、テストスイート内のデータベースインスタンスを共有します

  テストクラスライブラリGTest.pyを変更し、ROBOT_LIBRARY_SCOPEが値に置き換えられます「テストスイート」

1  クラスGTEST(オブジェクト):
 2  
3      ROBOT_LIBRARY_SCOPE = " テストスイート" 
4      カウンタ= 0
 5  
6      デフ __init__ (自己):
 7          GTest.counter + = 1
 8  
9      DEF :(自己)カウント
 10          リターン self.counter、IDを(自己)
コードの表示

  新しいテストスイートlogin2.robot

1 ***設定***
 2  ドキュメントスイート説明
 3  ライブラリGTest.py
 4  
5 ***テストケース***
 6  試験タイトル
 7      [タグ] DEBUG
 8      {RES} @カウント
 9      ログ多く@ {RES}
 10  
11  TITLE2テスト
 12      [タグ] DEBUG
 13      {RES} @カウント
 14      {RES} @多くのログを
コードの表示

  テストスイートlogin.robotとlogin2.robotを実行します

 

 

 

 

 以上の試験結果から、図1に、同じテストスイート内のすべてのテストケースが同じGTEST例を得る工程。図2に、異なった異なるテストスイートは、GTEST例を取得し、したがって「TEST SUITE」スコープ設定各テストスイートのためのテスト・データベース・インスタンスを作成します。

  3.GLOBAL:テストプロセスを通してのみのテストデータベースインスタンスを作成し、すべてのテストスイート、テストケースは、テストライブラリの同じインスタンスを共有します

  テストライブラリGTest.pyを変更し、ROBOT_LIBRARY_SCOPEが「GLOBAL」に変更します

1  クラスGTEST(オブジェクト):
 2  
3      ROBOT_LIBRARY_SCOPE = " GLOBAL " 
4      カウンタ= 0
 5  
6      デフ __init__ (自己):
 7          GTest.counter + = 1
 8  
9      DEF (自己)カウント:
 10          戻り self.counter、IDを(自己)
コードの表示

  テストスイートlogin.robotとlogin2.robotを実行します

 

 

 同じインスタンスGTESTが使用され、一方のみをlogin2.robot実行によって実行例の結果、およびテストスイートlogin.robotから。SCOPEしたがって、試験例を通じてセット「GLOBAL」は、唯一のテスト・ライブラリーを生成します。すべてのキットは、テストケースは、テスト・ライブラリーは、このインスタンスを共有しました。

  同じライブラリ内の別のパラメータをテストするために、複数の輸入が、関係なく、ROBOT_LIBRARY_SCOPEが定義されているかどうかの、各テストスイートは、新しいインスタンスを作成する場合は、ロボットの公式ウェブサイトでは、説明しました

  GTest.py、ROBOT_LIBRARY_SCOPEが「GLOBAL」として定義されたテスト用のライブラリを作成します。

1  クラスGTEST(オブジェクト):
 2  
3      ROBOT_LIBRARY_SCOPE = " GLOBAL " 
4      カウンタ= 0
 5  
6      デフ __init__(自己、* 引数):
 7          self.args = 引数
 8          GTest.counter + = 1
 9  
10      DEF (自己)をカウント:
 11          リターン self.counter、ID(自己)
コードの表示

  テストスイートlogin.robotを作成します。

1 ***設定***
 2  ドキュメントスイート説明
 3  ライブラリGTest.pyのsuite1のlogin1
 4  
5 ***テストケース***
 6  試験タイトル
 7      [タグ] DEBUG
 8      {RES} @カウント
 9      {RES} @多くのログを
 10  
11  試験TITLE2
 12      [タグ] DEBUG
 13      {RES} @カウント
 14      {RES} @多くのログを
コードの表示

  テストスイートlogin2.robotを作成します。

1 ***設定***
 2  ドキュメントスイート説明
 3  ライブラリGTest.pyのlogin2のsuite2
 4  
5 ***テストケース***
 6  試験タイトル
 7      [タグ] DEBUG
 8      {RES} @カウント
 9      {RES} @多くのログを
 10  
11  試験TITLE2
 12      [タグ] DEBUG
 13      {RES} @カウント
 14      {RES} @多くのログを
コードの表示

 

ビューのテスト実行の結果から定義の範囲がグローバルになってきているが、それは、異なる実施例を生成し、しかし、異なるテストスイートに導入異なるパラメータに、テストスイートの異なる実施形態の実行中に使用します。

おすすめ

転載: www.cnblogs.com/blackeyes1023/p/11613463.html