В настоящее время я использую следующее решение, чтобы сделать снимок экрана в конце каждой тестовой функции с помощью PyTest. Как я могу убедиться, что скриншоты сделаны только в случае провала теста? Это вопрос о механике PyTest. Этот вопрос НЕ касается селена или аппиума.
Я нашел подобные вопросы здесь, на Stackoverflow, но не совсем то же самое. Решения, предоставленные на эти другие вопросы, не отвечают на мой вопрос. Поскольку снимок экрана при неудачном тестировании с помощью PyTest является распространенной проблемой, я считаю, что он заслуживает отдельного и довольно конкретного c ответа.
@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')