2017-03-24 13 views
1

私はPython 2.7プロジェクトを実際に覗いていますが、実際にはPythonに精通していません。 Firefoxを使用しているセレンを使用しているため、Firefoxがインストールされていないと失敗するテストがあります。テストを実行できないときにテストをスキップしたい。依存関係がないときのPythonテストをスキップ

Testクラス

class SeleniumAuthTestCase(SeleniumTestCase): 

エラー私はindividual test methods skipped via annotationを持つ方法があることを考え出し

Traceback (most recent call last): 
    File "/mnt/vagrant/source/some/path/tests/selenium/test_auth.py", line 14, in setUpClass 
    super(cls, cls).setUpClass() 
    File "/mnt/vagrant/source/some/path/testcases.py", line 14, in setUpClass 
    cls.driver = Firefox() 
    File "/some/path/venv/local/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 55, in __init__ 
    self.binary = firefox_binary or capabilities.get("binary", FirefoxBinary()) 
    File "/some/path/venv/local/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 47, in __init__ 
    self._start_cmd = self._get_firefox_start_cmd() 
    File "/some/path/venv/local/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 163, in _get_firefox_start_cmd 
    " Please specify the firefox binary location or install firefox") 
RuntimeError: Could not find firefox in your system PATH. Please specify the firefox binary location or install firefox 

取得しています。ただし、ここでのエラーは、いずれかのテストメソッドが呼び出される前に発生します。親クラスのsetUpClassです。

また、私はメソッドをオーバーロードすることができます考え出し:

@classmethod 
def setUpClass(cls): 
    super(SeleniumAuthTestCase, cls).setUpClass() 

だから私は依存関係がロードされている場合がチェックし、そうでない場合は、親クラスを呼び出す避けることができます。その上に、物がロードされているかどうかを示すフラグを設定し、それをチェックするメソッドごとに注釈を設定することができます。しかしこれは非常に不器用で、私はずっとこのPHPUnitのコードのような何かをしたいと思います。これは、通常、Pythonで

public function setUp() { 
    if (true) { 
     $this->markTestSkipped(); 
    } 
} 

をどのように行われますか?

+0

いくつかの 'はImportErrorを除き、あなたが追加する必要があります:'、そしてunittest.skipIf'または 'unittest.TestCase.skipTest' – o11c

+1

@ http://stackoverflow.com/questions/11452981/skip'使用-unittest-if-some-in-setup-classが失敗する – sbarzowski

答えて

0

approach that sbarzowski linkedが私のために働いた。そう

@classmethod 
def setUpClass(cls): 
    try: 
     Firefox() 
    except: 
     raise unittest.SkipTest("Selenium webdriver needs Firefox, which is not available") 

    super(SeleniumAuthTestCase, cls).setUpClass() 
関連する問題