0


【Selenium】pytest+allure实现失败截图

文章目录

1 准备

  1. 安装python
  2. 安装pytest:pip install pytest
  3. 安装allure-pytest:pip install allure-pytest
  4. 安装allure的命令行工具:https://docs.qameta.io/allure/#_installing_a_commandline 安装完成后记得配环境变量,校验如下:在这里插入图片描述
  5. 安装pycharm
  6. 要做web自动化:安装chrome浏览器、下载chromedriver驱动
  7. 安装selenium:pip install selenium
  8. 创建项目,写脚本
  9. 当测试用例失败时完成截图并添加到allure附件中 (1)如何识别每一条测试用例失败的情况:使用pytest中的钩子函数:pytest_runtest_makereport(item, call) (2)conftest.py 在这个文件中实现钩子函数

2 基础方法

test_case\test.screenshot.py文件:

import allure
from selenium import webdriver
from selenium.webdriver.common.by import By

deftest_baidu():# 创建webdriver
    wd = webdriver.Chrome()# 打开百度
    wd.get('http://www.baidu.com')try:# 错误代码, 故意失败
        wd.find_element(By.ID,'xxx')except Exception as e:# 如果操作步骤过程中有异常,那么用例失败,在这里完成截图操作
        img = wd.get_screenshot_as_png()# 将截图展示在allure测试报告上
        allure.attach(img,'失败截图', allure.attachment_type.PNG)# 在命令行依次输入以下命令:# 运行pytest测试用例,在./report/allure-results下生成测试数据# pytest -sv test_case/test_screenshot.py --alluredir ./report/allure-results --clean-alluredir# 找到测试数据, 在./reports/allure-report下生成测试报告# allure generate ./report/allure-results -o ./report/allure-report --clean

3 使用钩子函数

conftest.py文件:

import allure
import pytest
from selenium import webdriver

driver =None# 定义一个全局driver对象@pytest.hookimpl(tryfirst=True, hookwrapper=True)defpytest_runtest_makereport(item, call):# 什么时候去识别用例的执行结果呢?# 后置处理 yield:表示测试用例执行完了
    outcome =yield
    rep = outcome.get_result()# 获取测试用例执行完成之后的结果if rep.when =='call'and rep.failed:# 判断用例执行情况:被调用并且失败# 实现失败截图并添加到allure附件。截图方法需要使用driver对象,想办法把driver传过来# 如果操作步骤过程中有异常,那么用例失败,在这里完成截图操作
        img = driver.get_screenshot_as_png()# 将截图展示在allure测试报告上
        allure.attach(img,'失败截图', allure.attachment_type.PNG)# 自定义fixture实现driver初始化及赋值并且返回@pytest.fixture(scope='session', autouse=True)definit_driver():global driver   # global变量,相当于给上面driver = None赋值了if driver isNone:
        driver = webdriver.Chrome()return driver

test_case\test.screenshot.py文件:

from selenium.webdriver.common.by import By

deftest_baidu(init_driver):
    init_driver.get('http://www.baidu.com')
    init_driver.find_element(By.ID,'xxx')
标签: selenium

本文转载自: https://blog.csdn.net/weixin_49026134/article/details/124684159
版权归原作者 程序媛_ 所有, 如有侵权,请联系我们删除。

“【Selenium】pytest+allure实现失败截图”的评论:

还没有评论