pytest.mark.usefixturesの理解

前の調査では、フィクスチャ関数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 == " 立即体验"

 

おすすめ

転載: www.cnblogs.com/my_captain/p/12713415.html