我将pytest与pytest-html插件结合使用,该插件在测试运行后生成一个HTML报告。在
我正在使用自动连线会话固定装置在浏览器中自动打开生成的HTML报告:@pytest.fixture(scope="session", autouse=True)
def session_wrapper(request):
print('Session wrapper init...')
yield
# open report in browser on Mac or Windows, skip headless boxes
if platform.system() in ['Darwin', 'Windows']:
html_report_path = os.path.join(request.config.invocation_dir.strpath, request.config.option.htmlpath)
open_url_in_browser("file://%s" %html_report_path)
上面的代码可以正常工作,但并不一致,因为有时浏览器试图在创建文件之前加载该文件,这会导致“找不到文件”错误,并且需要手动刷新浏览器才能显示报告。在
我的理解是scope="session"是最广泛的可用范围,我的假设是pytesthtml应该在会话结束之前完成报告的生成,但显然情况并非如此。在
问题是:什么是正确的方法钩住浏览器报告自动启动代码?是不是pytest-html也挂接到会话终结器作用域?在这种情况下,如何确保HTML文件只有在文件创建之后才在浏览器中打开?在