Saat ini saya menggunakan solusi berikut untuk mengambil tangkapan layar di akhir setiap fungsi pengujian dengan PyTest. Bagaimana cara memastikan bahwa tangkapan layar diambil hanya jika pengujian gagal? Ini adalah pertanyaan tentang mekanisme PyTest. Pertanyaan ini BUKAN tentang selenium atau appium.
Saya menemukan pertanyaan serupa di sini di Stackoverflow, tapi tidak persis sama. Solusi yang diberikan untuk pertanyaan-pertanyaan lain tidak menjawab pertanyaan saya. Karena mengambil tangkapan layar pada kegagalan pengujian dengan PyTest adalah masalah umum, saya yakin masalah ini memerlukan jawaban terpisah dan cukup spesifik.
@pytest.fixture(scope="function", autouse=True)
def take_screenshot(self, appium_driver):
yield
time.sleep(1)
current_filename_clean = os.path.basename(__file__).replace("test_", "").replace(".py", "")
current_test_name = os.environ.get("PYTEST_CURRENT_TEST").split(":")[-1].split(" ")[0].replace("test_", "")
appium_driver.get_screenshot_as_file(
f'test_reports/{current_filename_clean}_android_{current_test_name}_{datetime.today().strftime("%Y-%m-%d")}.png')