ขณะนี้ฉันกำลังใช้โซลูชันต่อไปนี้เพื่อจับภาพหน้าจอในตอนท้ายของทุกฟังก์ชันการทดสอบด้วย PyTest ฉันจะแน่ใจได้อย่างไรว่าจะมีการจับภาพหน้าจอเฉพาะในกรณีที่การทดสอบล้มเหลวเท่านั้น นี่เป็นคำถามเกี่ยวกับกลไกของ PyTest คำถามนี้ไม่เกี่ยวกับซีลีเนียมหรือแอปเปียม
ฉันพบคำถามที่คล้ายกันที่นี่ใน Stackoverflow แต่ไม่เหมือนกันทุกประการ วิธีแก้ไขที่ให้ไว้สำหรับคำถามอื่นๆ เหล่านั้นไม่ตอบคำถามของฉัน เนื่องจากการถ่ายภาพหน้าจอเกี่ยวกับความล้มเหลวในการทดสอบด้วย PyTest เป็นปัญหาที่พบบ่อย ฉันจึงเชื่อว่าสมควรได้รับคำตอบที่แยกจากกันและค่อนข้างเฉพาะเจาะจง
@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')