测试失败时如何保存多个屏幕截图

How I can save multiple screenshots when the test is fail

我使用 selenium 和 pytest 进行一些自动化测试,我使用 fixture 在它失败时截取屏幕截图这是 fixture 的代码:


    timestamp = datetime.now().strftime('%H-%M-%S')

    pytest_html = item.config.pluginmanager.getplugin('html')
    outcome = yield
    report = outcome.get_result()
    extra = getattr(report, 'extra', [])
    if report.when == 'call':
        # always add url to report
        # extra.append(pytest_html.extras.url('E:\Python Projects\StackField\screenshot'))
        xfail = hasattr(report, 'wasxfail')
        if (report.skipped and xfail) or (report.failed and not xfail):
            feature_request = item.funcargs["request"]
            driver = feature_request.getfixturevalue("setup")
            img_name = "name.png"
            img_path = os.path.join("E:\Python Projects\StackField\screenshot", img_name)
            driver.save_screenshot(img_path)
            # extra.append(pytest_html.extras.image('E:\Python Projects\StackField\screenshot' + timestamp + '.png'))

        if (report.skipped and xfail) or (report.failed and not xfail):
            # only add additional html on failure
            extra.append(pytest_html.extras.image(img_path))
            extra.append(pytest_html.extras.html('<div>Additional HTML</div>'))
        report.extra = extra

当超过 1 个测试失败时我遇到了一个问题,相同的屏幕截图被添加到报告中我的下一个问题是如何在里面添加超过 1 个屏幕截图?

提前致谢!

您似乎用相同的名称保存了所有屏幕截图。

尝试为截图设置唯一名称:

from random import randrange

if (report.skipped and xfail) or (report.failed and not xfail):
    feature_request = item.funcargs["request"]
    driver = feature_request.getfixturevalue("setup")
    timestamp = datetime.now().strftime('%H-%M-%S')
    img_name = "name" + timestamp + ".png"
    # (even better also add some random number in advance "name" + timestamp + randrange(100) + ".png"

    img_path = os.path.join("E:\Python Projects\StackField\screenshot", img_name)
    driver.save_screenshot(img_path)