python+seleniumが複数のテストメソッドを実行する場合、chromeブラウザが複数回開く理由

3411 ワード

クラスにsetUp()メソッドが定義されている場合、テストプログラムは各テスト項目を実行する前にこのメソッドを呼び出します.同様に、tearDown()メソッドは、すべてのテスト項目の実行が完了すると呼び出されます.したがって、setUp()でブラウザを開くと、マルチtest_が実行されます.XXXメソッドの場合、各caseはsetupを呼び出し、test_を実行するたびにXXX、ブラウザは1回の解決方法を開いて閉じます:もし私たちがsetup/tearDownを1回だけ呼び出したいならどうすればいいですか?setuUpClass()とtearDownClass()クラスメソッドを使用します.注意この2つの方法を使うときは必ず@classmethodアクセサリーで飾ってください.
class simple_test(unittest.TestCase):
    @classmethod
    def setUpClass(self):
        self.foo = list(range(10))

さらに1つ上のレベルでは、ファイルレベル全体で setUp/tearDownを1回だけ呼び出すことを望んでいます.この場合、setUpModule()tearDownModule()の2つの関数を使用します.関数に注意してください.TestCaseクラスと同じです.
lang:python
import unittest

def setUpModule():
    pass

class simple_test(inittest.TestCase):
    ...

一般的なassert*()法では、捕獲されていない異常が投げ出された場合、この試験例はfailとして記載され、試験は継続される.しかし、異常がsetUp()で発生すると、テストプログラム自体にエラーがあり、後のテスト例もtearDown()も実行されないと考えられます.すなわち、tearDown()は、setUp()が正常に実行された場合にのみ実行され、必ず実行される.
最後に、この2つのメソッドのデフォルト実装は何もしない( passという文しかない)ので、上書きするときに直接新しい内容を書けばいいので、親を呼び出す必要はありません.