前の調査では、フィクスチャ関数common_driverがコードで渡され、pytest.mark.usefixturesが使用されています。
@ pytest.mark.usefixtures(" common_driver " ) def test_welcome(self、common_driver): WelcomePage(common_driver).swipe_screen() WelcomePage(common_driver).get_spe_screenshot() image_text = WelcomePage(common_driver).identify_screenshot() assert image_text == " 立即体验」
今日の公式のpytestのドキュメントを見ると、主に2つのケースに分けて、他の方法で使用できることがわかりました
1.フィクスチャでreturnを使用する必要がない場合は、直接pytest.mark.usefixtures(funcname)を使用してください。例:テスト中に空のディレクトリを作成し、その空のディレクトリを現在のディレクトリとして操作する必要がありますが、特定の空のディレクトリを気にする必要はありません。この場合、tempfileおよびpytestフィクスチャを使用して次のことを実現できます。
conftest.pyコード
インポートのOS インポートshutil インポート一時ファイル のインポートpytest @ pytest.fixture DEF cleandir(): old_cwd = os.getcwd() #一時ディレクトリを作成 newpathを= tempfile.mkdtemp() #現在のパスが一時的なディレクトリに切り替えられ os.chdir(newpathが) 利回り #現在のパスが元のディレクトリに切り替えられ os.chdir(old_cwd) #再帰的に一時ディレクトリを削除し shutil.rmtree(newpathをします)
test_setenv.py
インポートのOS インポートpytest @ pytest.mark.usefixtures(" cleandir " ) クラスTestDirectoryInit: DEFのtest_cwd_starts_empty(セルフ): #の空でない一時ディレクトリにアサーションファイル アサート os.listdirを(os.getcwd())== [] # open(" myfile "、" w " )をfとして新しいファイルを作成: f.write(" hello " )def test_cwd_again_starts_empty(self): # pytest.mark.usefixturesはクラスに作用するため、これらの2つのテストメソッドにはcleandirフィクスチャが必要であるため、2つの新しい一時ディレクトリが作成されます。このメソッドでは、一時ディレクトリに新しいファイルがないため、空です。さらに、-ZA-Z0-9独立pytest実行の順序 アサート os.listdir(os.getcwd())== []
2.フィクスチャの戻り値が必要な場合は、フィクスチャで装飾されたメソッド名をテストメソッドに渡します。例:common_driver
def test_welcome(self、common_driver): WelcomePage(common_driver).swipe_screen() WelcomePage(common_driver).get_spe_screenshot() image_text = WelcomePage(common_driver).identify_screenshot() assert image_text == " 立即体验"