我正在用硒在 pytest bdd 中编写测试。我正在使用 pytest-html 生成报告。出于调试目的或只是为了进行适当的日志记录,我想要硒屏幕截图和 html 报告中的其余日志。但我无法在通过的报告中获得硒截图。
这是我正在尝试的事情。conftest.py 中有一个 pytest-html 钩子包装器
conftest.py
@pytest.mark.hookwrapper
def pytest_runtest_makereport(item, call):
pytest_html = item.config.pluginmanager.getplugin('html')
outcome = yield
report = outcome.get_result()
print("printing report")
extra = getattr(report, 'extra', [])
if report.when == 'call':
mylogs = ""
with open('/tmp/test.log', 'r') as logfile:
for line in logfile:
mylogs = mylogs + line + "<br>"
extra.append(pytest_html.extras.html('<html><body>{}</body></html>'.format(mylogs)))
report.extra = extra
此代码在我的 report.html 中添加日志同样,我将在我的测试代码中添加一些 selenium 屏幕截图。我想知道我们是否可以生成包含所有硒屏幕截图的报告。
以下是我的测试文件
测试文件.py
def test_case():
logger.info("I will now open browser")
driver = webdriver.Chrome()
driver.get('http://www.google.com')
driver.save_screenshot('googlehome.png')
time.sleep(3)
driver.quit()
我希望 googlehome.png 和所有其他 png 文件成为 html 报告的一部分。如果我们可以生成像 html 报告这样的机器人框架,我会很棒。
在 pytest 中有什么方法可以做到这一点吗?
以下是我用来生成报告的命令
py.test -s --html=report.html --self-contained-html -v