zoukankan      html  css  js  c++  java
  • pytest失败截图加载到html报告内

    conftest.py 里添加截图的逻辑
    # coding:utf-8
    import os
    from selenium import webdriver
    import pytest
    from common.settings import PROXY_SERVER
    
    driver = None
    
    
    @pytest.mark.hookwrapper
    def pytest_runtest_makereport(item):
        """
        当测试失败的时候,自动截图,展示到html报告中
        :param item:
        """
        pytest_html = item.config.pluginmanager.getplugin('html')
        outcome = yield
        report = outcome.get_result()
        extra = getattr(report, 'extra', [])
    
        if report.when == 'call' or report.when == "setup":
            xfail = hasattr(report, 'wasxfail')
            if (report.skipped and xfail) or (report.failed and not xfail):
                file_name = report.nodeid.replace("::", "_") + ".png"
                screen_img = _capture_screenshot()
                if file_name:
                    html = '<div><img src="data:image/png;base64,%s" alt="screenshot" style="600px;height:300px;" ' 
                           'onclick="window.open(this.src)" align="right"/></div>' % screen_img
                    extra.append(pytest_html.extras.html(html))
            report.extra = extra
    
    
    def _capture_screenshot():
        '''
        截图保存为base64,展示到html中
        :return:
        '''
        return driver.get_screenshot_as_base64()
    
    
    @pytest.fixture(scope='session', autouse=True)
    def browser():
        global driver
        chrome_options = webdriver.ChromeOptions()
        chrome_options.add_argument('--proxy-server={}'.format(PROXY_SERVER))
        if os.getenv("DOCKER") == "True":
            chrome_options.add_argument("--headless")
            chrome_options.add_argument("--disable-gpu")
            chrome_options.add_argument("--no-sandbox")
            chrome_options.add_argument("--ignore-certificate-errors")
        driver = webdriver.Chrome(options=chrome_options)
        driver.implicitly_wait(30)
        yield driver
        driver.quit()
    

      case 级别调用时

    from page_object.application.app_create import AppCreatePage
    
    
    class TestCreateApp():
    
        def 测试创建应用(self, browser):
            create_page = AppCreatePage(browser)
            create_page.open_create_app()
            create_page.create_app()
    

      这里吧driver当做一个参数传给类,方便于page object模式开发写UI自动化

  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/hchan/p/12931563.html
Copyright © 2011-2022 走看看