2016-05-04 6 views
1
私は何かが行かなかったときに私が期待した方法で、​​方法では、私のテストケースの validate()メソッドの実行を防ぎたいと思い

Pysys。なぜなら、実行時に発生したエラーのvalidate()メソッドの実行を防ぐ()

class MyTestCase(BaseTest): 
    def execute(self): 
     if somethingWentOK == False: 
      self.addOutcome(BLOCKED) 

をそして、validate()方法から:

def validate(self): 
     if self.getOutcome()!=BLOCKED: 
      doValidationStuff() 
     else: 
      self.log.error("Something failed!!!") 

しかし、私が手出力をd ..です

私は次のような何かをしようとしました私が期待したものからifferent:

2016-05-04 17:25:36,892 ERROR Testcase execution interrupted by previous errors! 
2016-05-04 17:25:36,911 INFO 
2016-05-04 17:25:36,933 INFO Test duration 51.48 secs 
2016-05-04 17:25:36,948 INFO Test final outcome NOT VERIFIED 
2016-05-04 17:25:36,950 INFO 
2016-05-04 17:25:37,025 CRIT 
2016-05-04 17:25:37,026 CRIT Test duration: 51.60 (secs) 
2016-05-04 17:25:37,026 CRIT 
2016-05-04 17:25:37,026 CRIT Summary of non passes and tests requiring inspection: 

は私が代わりにフレームワークが生成するNOT VERIFIED 1のBLOCKED結果を得るために思っていた...

私は、私がいない正しく何かをやっていることを理解それについてのフィードバックは高く評価されました。

答えて

1

基本的に、基本テストクラスには、逆順優先順位(PASSED、INSPECT、NOTVERIFIED、FAILED、TIMEDOUT、DUMPEDCORE、BLOCKED、SKIPPED)のいずれかを含む結果のリストであるself.outcomeという属性があります。ベーステストでaddOutcome()を呼び出すと、このリストに値を追加します。

テストの全体的な結果は、優先順位が最も高いリストのエントリです。つまり、リストに[PASSED、FAILED、BLOCKED]が含まれている場合、全体的な結果はブロックされます。これは、ベーステストでgetOutcome()を呼び出すときに返されるものです。 BLOCKED、DUMPEDCORE、TIMEDOUT、FAILEDのいずれの結果も、テストの失敗を示すものとみなされます。下記の例では、結果リストにBLOCKEDを追加してから、validateメソッドでBLOCKEDエントリがあるかどうかを確認し、結果リストにBLOCKEDエントリがある場合は検証をスキップします。

from pysys.constants import * 
from pysys.basetest import BaseTest 

class PySysTest(BaseTest): 
    somethingWentOK=False 
    def execute(self): 
     if self.somethingWentOK == False: 
      self.log.error("Adding BLOCKED outcome ...") 
      self.addOutcome(BLOCKED) 

    def validate(self): 
     self.log.info("Performing validation ...") 
     if not BLOCKED in self.outcome: 
      self.doValidationStuff() 
     else: 
      self.log.error("Something failed!!!") 

    def doValidationStuff(self): 
     pass 

...実行時に次の出力が表示されます。

C:\code\pysys-examples\tests>pysys.py run 
2016:05:04 18:33:54 INFO ============================================================== 
2016:05:04 18:33:54 INFO Id : test_001 
2016:05:04 18:33:54 INFO ============================================================== 
2016:05:04 18:33:54 ERROR Adding BLOCKED outcome ... 
2016:05:04 18:33:54 INFO Performing validation ... 
2016:05:04 18:33:54 ERROR Something failed!!! 
2016:05:04 18:33:54 INFO 
2016:05:04 18:33:54 INFO Test duration: 0.02 secs 
2016:05:04 18:33:54 INFO Test final outcome: BLOCKED 
2016:05:04 18:33:54 INFO 
2016:05:04 18:33:54 CRIT 
2016:05:04 18:33:54 CRIT Test duration: 0.04 (secs) 
2016:05:04 18:33:54 CRIT 
2016:05:04 18:33:54 CRIT Summary of non passes: 
2016:05:04 18:33:54 CRIT BLOCKED: test_001 

PySysデフォルト全体的な結果を計算し、完了する前に全体のテストを実行することで行います - すなわち、それはユニットテストフレームワークの多くのように高速に失敗していません。最新のリリース1.1には、テストの失敗を示す結果リストに結果が追加されると直ちにテストが即座に完了するように、フェイル・セファレンスのセマンティクスがあります。つまり、-bオプションを使用すると、pysys.pyの実行コマンドに失敗高速セマンティクスを使用して実行できます。

それは、すぐBLOCKED結果が追加されるように実行する文句を言わないよう、あなたが、あなたのvalidate()メソッド内の任意の条件のチェックを必要としない場合には
C:\code\pysys-examples\tests>pysys.py run -b true 
2016:05:04 18:36:25 INFO ============================================================== 
2016:05:04 18:36:25 INFO Id : test_001 
2016:05:04 18:36:25 INFO ============================================================== 
2016:05:04 18:36:25 ERROR Adding BLOCKED outcome ... 
2016:05:04 18:36:25 INFO Aborting test due to abortOnError set to true ... 
2016:05:04 18:36:25 INFO 
2016:05:04 18:36:25 INFO Test duration: 0.02 secs 
2016:05:04 18:36:25 INFO Test final outcome: BLOCKED 
2016:05:04 18:36:25 INFO 
2016:05:04 18:36:25 CRIT 
2016:05:04 18:36:25 CRIT Test duration: 0.04 (secs) 
2016:05:04 18:36:26 CRIT 
2016:05:04 18:36:26 CRIT Summary of non passes: 
2016:05:04 18:36:26 CRIT BLOCKED: test_001 

。これをデフォルトでオンにしたい場合は、pysysproject.xmlファイルでも設定できます。

property name="defaultAbortOnError" value="true" 
+0

ありがとう、Moray、すべてのあなたの助けに感謝します。 – ESRISM

関連する問題