问题描述:在通过Gitlab CI/CD
流水线
运行Selenium测试时,Extent测试报告中不显示屏幕截图。
解决方法:
在Gitlab CI/CD
流水线
中添加保存屏幕截图的步骤。
stages:
- test
screenshot:
stage: test
script:
- mkdir screenshots
- python run_tests.py
- mv *.png screenshots/
artifacts:
paths:
- screenshots/
在上述示例中,我们首先在脚本开始之前创建了一个名为screenshots的文件夹。然后执行Selenium测试,并将生成的屏幕截图移动到screenshots文件夹中。最后,我们使用Gitlab的artifacts将screenshots文件夹作为构建产物进行保存。
在Extent测试报告中添加屏幕截图。
from selenium import webdriver
from selenium.webdriver.common.by import By
from extentreports import ExtentReports, Markup, Color
# 创建ExtentReports实例
extent = ExtentReports()
# 启动WebDriver
driver = webdriver.Chrome()
# 执行Selenium测试
# 在测试步骤中添加屏幕截图
def add_screenshot_to_report(driver, description):
screenshot_path = "/screenshots/screenshot.png" # 屏幕截图的保存路径
driver.save_screenshot(screenshot_path)
extent.add_screen_capture(screenshot_path, description)
# 添加测试步骤到Extent测试报告
extent.start_test("Test Case 1", "This is a sample test case")
extent.start_step("Step 1")
driver.find_element(By.ID, "element_id").click()
extent.log_step_status("PASS", "Element clicked successfully")
except Exception as e:
extent.log_step_status("FAIL", "Failed to click element")
add_screenshot_to_report(driver, "Failed to click element")
raise e
finally:
extent.end_step()
# 结束WebDriver实例
driver.quit()
# 结束Extent测试报告
extent.end_test()
extent.save()
在上述示例中,我们首先在测试开始之前创建了ExtentReports实例,并启动了WebDriver。在测试步骤中,我们使用了add_screenshot_to_report函数来添加屏幕截图到测试报告中。在测试步骤结束之后,我们结束了WebDriver实例,并保存了Extent测试报告。
通过上述解决方法,你可以在通过Gitlab CI/CD流水线运行Selenium测试时,将屏幕截图添加到Extent测试报告中。