如何捕获 Python Unittest 测试用例失败的屏幕截图

2024-02-18

我使用 Python 3.6.5 和以下库:

  • Appium-Python-客户端==0.26
  • 单元测试2==1.1.0
  • 硒==3.5.0
  • pytest==3.6.3

现在我需要截图以防测试失败,所以我故意做了一个错误的陈述self.driver.find_element_by_css_selector('test') .

我在用sys.exc_info()。但是当我使用命令执行以下代码时:py.test untitled.py or python3 -m unittest untitled.py它不捕获它。

Code:

import sys, time, unittest2
from selenium import webdriver

class FB360(unittest2.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome()

    def test_user_can_login(self):
            self.driver.get('https://www.google.co.in')
            self.driver.find_element_by_css_selector('test')

    def tearDown(self):
        print(sys.exc_info())
        if sys.exc_info()[0]:
            test_method_name = self._testMethodName
            self.driver.save_screenshot(test_method_name + str(time.time()) + '.png')
        self.driver.quit()

if __name__ == '__main__':
    unittest2.main()

O/P:

(无,无,无)

E

=================================================== =================== 错误:test_user_can_login(无标题.FB360)


回溯(最近一次调用最后一次): 文件“/Volumes/Harry/Projects/pythonScreenshots/untitled.py”,第 11 行,位于 test_user_can_login self.driver.find_element_by_css_selector('测试') 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 498 行,位于 find_element_by_css_selector 中 返回 self.find_element(by=By.CSS_SELECTOR, value=css_selector) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第 832 行,在 find_element 中 '值': 值})['值'] 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py”,第297行,执行中 self.error_handler.check_response(响应) 文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py”,第 194 行,在 check_response 中 引发异常类(消息、屏幕、堆栈跟踪) selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“css选择器”,“selector”:“test”} (会话信息:chrome=67.0.3396.99) (驱动程序信息:chromedriver=2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363),平台=Mac OS X 10.13.5 x86_64)

我的立业之本:

  • print(sys.exc_info())打印:(无,无,无)。这意味着即使我收到以下异常,我的测试用例也会通过:

selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“css选择器”,“selector”:“test”}

  • As sys.exc_info())返回 (None, None, None) 执行不会完成if状况

所以我主要关心的是为什么sys.exc_info())即使我收到 NoSuchElementException 也会返回 (None, None, None) ?


我用它来截取失败测试的屏幕截图

@pytest.fixture()
def browser(request):
    options = Options()
    options.add_argument("--headless")  # Runs Chrome in headless mode.
    _chrome = webdriver.Chrome(options=options)
    failed_before = request.session.testsfailed
    yield _chrome
    if request.session.testsfailed != failed_before:
        test_name = request.node.name
        take_screenshot(_chrome, test_name)
    _chrome.close()


def take_screenshot(browser, test_name):
    screenshots_dir = "path_to/functional_tests/failure_screenshots"
    screenshot_file_path = "{}/{}.png".format(screenshots_dir, test_name)
    browser.save_screenshot(
        screenshot_file_path
    )
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何捕获 Python Unittest 测试用例失败的屏幕截图 的相关文章

  • httplib.BadStatusLine: '' 在 Linux 上,但在 Mac 上则不然

    这个错误已经困扰我几个小时了 我决定编写一个单独的项目 只是为了看看我是否可以复制它 而且我可以 但只能在我的服务器上复制 这适用于我的 Mac Mac OSX El Capitan 10 11 6 服务器 CentOS 7 2 1511
  • matplotlib get_color 用于子图

    我正在按照这里的教程进行操作 https matplotlib org gallery ticks and spines multiple yaxis with spines html https matplotlib org galler
  • matplotlib 的 pcolor 中的白线

    在某些 pdf 查看器 例如 OSX 上的 Preview 中 使用以下命令绘制的图matplotlib的 pcolor 有白线 见下图 我怎样才能摆脱它们 源代码非常简单 选择任何数据x y z import matplotlib mat
  • 使用 OpenCV 进行图像模糊检测

    我正在研究图像的模糊检测 我已经用过拉普拉斯方法的方差在 OpenCV 中 img cv2 imread imgPath gray cv2 cvtColor img cv2 COLOR BGR2GRAY value cv2 Laplacia
  • Pandas cut 方法不包括下限

    我正在尝试对包含 0 到 100 范围内的年龄的数据帧列进行分箱 当我尝试使用垃圾箱来包含零年龄时 它不起作用 这是一个使用包含我的数据范围的列表的演示 pd cut pd Series range 101 0 24 49 74 100 范
  • 简单 CAE 的问题

    看起来简单的 CAE 不适用于 Carvana 数据集 我正在尝试对 Carvana 数据集进行简单的 CAE 你可以下载它here https www kaggle com c carvana image masking challeng
  • 在 Pyinstaller、语音识别和 Pyttsx3 中使用“-w”时,PySimpleGUI 中出现“OSError:[WinError 6] 句柄无效”

    所以我用 PySimpleGUI 创建了一个程序 然后用 Pyinstaller 从它创建了 exe 文件 这是我的命令 pyinstaller hidden import pyttsx3 drivers hidden import pyt
  • 确保特定列位于数据框中最后(或第一个)的最快方法是什么

    given df df pd DataFrame np arange 8 reshape 2 4 columns list abcd 假设我需要专栏 b 到最后 我可以做 df a c d b 但是确保给定列位于末尾的最有效方法是什么 这就
  • Python服务器“通常只允许每个套接字地址使用一次”

    我正在尝试用 python 创建一个非常基本的服务器 它侦听端口 当客户端尝试连接时创建 TCP 连接 接收数据 发回某些内容 然后再次侦听 并无限期地重复该过程 这是我到目前为止所拥有的 from socket import server
  • Django 单元测试数据库没有被拆除?

    我编写了一些单元测试来测试我的 Django 应用程序 特别是一个测试套件中包含大量代码setUp 功能 所述代码的目的是为数据库创建测试数据 是的 我了解固定装置 并且选择在这种情况下不使用它们 当我运行单元测试套件时 运行的第一个测试通
  • 如何在Python中比较列表列表中的元素以及比较列表列表中的键?

    我有以下顺序 seq ATG ATG ATG ATG GAC GAT GAA CCT GCC GCG GCA GCT 这是一个字典键 用于存储每个密码子的氨基酸值 三联碱基 例如ATG GCT etc aminoacid TTT F TTC
  • Tensorflow:Cuda 计算能力 3.0。所需的最低 Cuda 能力为 3.5

    我正在从源安装tensorflow 文档 https www tensorflow org versions r0 10 get started os setup html installing from sources Cuda驱动版本
  • Python 日志记录 - 如何检查记录器是否为空

    我刚刚在我的应用程序中实现了日志记录 我想知道是否有一种方法可以检查记录器是否为空 我的想法是在我的脚本中设置两个处理程序 一个用于带水平仪的控制台WARNING 一个用于带级别的文件DEBUG 在脚本的最后 我需要检查是否CONSOLE记
  • 在Python中从整个图像中检测表格部分

    我有一张尺寸为 3500x5000 的图像 现在我只想检测整个图像中的表格部分 如果不能直接进行 OCR 处理 则对其进行裁剪和旋转 经过所有搜索后 我想到了使用裁剪图像中的每个单元格的想法https medium com coinmonk
  • Kivy错误(python 2.7):sdl2导入错误

    我尝试在我的 Python 2 7 项目 在 PyCharm Windows 10 环境中 上使用 kivy 但出现以下错误 如果有人可以帮助我吗 谢谢 PS 我多次尝试卸载 重新安装库等 并按照像这样的帖子上的建议进行操作 但它不起作用
  • Python 宏:用例?

    如果 Python 有一个类似于 Lisp Scheme 的宏工具 比如元Python https code google com p metapython 你会如何使用它 如果您是一名 Lisp Scheme 程序员 您会使用宏来做什么
  • 如何在Python中一次比较二维数组的2列与另一个数组的列

    我有两个字符串数组 每个数组有三列 我想比较两个二维数组的前两列 有 3 列和 4000 行 如果它们匹配 那么我需要那些匹配的值 但是我的代码不起作用 这是一个示例 array1 1stcolumn 2ndColumn 3rdColumn
  • 如何在Python中仅列出顶级目录?

    我希望能够仅列出某个文件夹内的目录 这意味着我不需要列出文件名 也不需要其他子文件夹 让我们看看一个例子是否有帮助 在当前目录中我们有 gt gt gt os listdir os getcwd cx Oracle doc DLLs Doc
  • 编写 CherryPy 装饰器以进行授权

    我有一个cherrypy应用程序 在某些视图上我想开始只允许某些用户查看它们 并将其他任何人发送到需要授权的页面 有没有办法使用自定义装饰器来做到这一点 我认为这将是最优雅的选择 这是我想做的一个基本示例 class MyApp autho
  • 添加条件计数器:基于其他列的值的计数器列

    我有一张这样的桌子 id id2 val a red apple a red orange b blue fish c violet beef a yellow banana a black pork 我想根据 id 和 id2 的值创建一

随机推荐

  • 存储库模式与简单数据访问层有何不同?

    我对在研究存储库模式期间所读到的内容感到困惑 我想知道人们是否 错误地 使用这个词 当他们只是指数据访问层时 由于在索引中找不到 存储库 设计模式 https rads stackoverflow com amzn click com 02
  • 删除过期的访问令牌

    有没有办法从数据库中删除所有过期的访问令牌 目前我正在使用 Django oauth2 工具包 目前 oauth2 没有提供删除过期访问令牌的机制 您可以从 django shell 运行或创建执行的自定义管理命令 from provide
  • 更改factory_boy中的默认faker区域设置

    如何在 Python Factory boy 中为我的所有工厂设置默认区域设置 在文档中说应该设置它factory Faker override default locale但这对我的骗子没有任何作用 import factory from
  • 如何在 Angular 4 中使用 Material Design 图标?

    我想使用来自的图标https materialdesignicons com https materialdesignicons com 在我的 Angular 4 项目中 网站上的说明仅涵盖如何将其包含在Angular 1 x https
  • 使用 C# 控制台应用程序创建 HTTP POST 请求并接收响应

    我需要将数据发布到 URL https somesite com 以根据我发布的参数下载 responseStrem 中的文件 如何使用 C 控制台应用程序来做到这一点 参数 文件名 用户身份 密码 类型 using System usin
  • 流星,mongodb,空格键,如何只显示小数点后两位

    我有一个具有类似值的集合 pctFail 0 3515500159795462 当我将其传递给模板并显示为 myTemplate 时 它在我的 html 中显示为 0 3515500159795462 如何将其显示为 0 35 您可以使用模
  • C# 中的结构体数组

    我正在尝试使用结构数组从用户那里获取输入 然后打印它 using System using System Collections Generic using System Linq using System Text namespace C
  • 使用 JavaScript 计算速度返回 NaN

    我正在按照此处显示的示例进行操作如何在 Javascript 中检测互联网速度 https stackoverflow com questions 5529718 how to detect internet speed in javasc
  • 在 Bootstrap 中向 span div 添加边框会弄乱布局

    我从 Twitter Bootstrap 开始 有一个关于布局如何在其中发挥作用的问题 这是 HTML
  • Bootstrap .popover()“显示”和“销毁”无法正常工作

    当我在 手动 模式下使用引导弹出窗口时 销毁 和 隐藏 无法正常工作 当我使用隐藏和销毁时 弹出窗口不透明度更改为 0 但它没有将显示更改为无 这导致弹出窗口容器覆盖其下方的内容 否则 如果我使用 toogle 模式 它可以正常工作 My
  • 当我们实例化一个对象时,是否会创建超类的实例?

    当我们在java中实例化一个特定的类时 是否会创建超类的实例 如果是这种情况 那么实例化所有超类将会产生大量开销 我尝试了以下代码 public class AClass public AClass System out println C
  • 倾斜阴影,而不是内容

    考虑 div class my class AAA div 我只想倾斜阴影 但不倾斜内容div将阴影放入伪元素中 my class height 5rem width 10rem before content box shadow 0 2e
  • 从用户代理检测设备(移动设备)是什么的php脚本?

    我尝试编写一个 php 脚本 从标头中的用户代理返回设备 我看到的问题并不是简单地执行正则表达式 因为设备之间存在差异 我错了吗 所以我想要根据用户代理更新的移动设备列表 我找到了这个清单 手机用户代理列表 http en wikipedi
  • 避免跨线程操作错误的最简洁和正确的方法?

    我不太擅长代表 也不明白幕后发生的事情 我得到了cross thread operation从不同线程访问 UI 项目时出错 我想做的是在 a 中编写一个通用函数Utility类 以便我可以将任何方法 代码块传递给该函数 我可以通过多种方式
  • 具有不规则节点的分层 data.frame 到 JSON

    我有这个嵌套数据集 grandparent parent child grandchild age Grandma 100 Grandma John 72 Grandma John Jessica 41 Grandma John Joann
  • XmlSerializer 更改编码

    我正在使用这段代码Serialize XML to String XmlWriterSettings xmlWriterSettings new XmlWriterSettings indent true Encoding Encoding
  • emacs 创建键修饰符

    我在 mac 操作系统上使用 emacs 我想将修饰符 Meta Control 映射到一个简单的键 基本上这就是我需要的 global set key kbd a hyper 这里 a 只是 a 键 没有 Control a 或其他什么
  • 用C解析CSV文件[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一个库可以用来解析 C 中的 CSV 文件 我在 Linux 系统上 我知道关于this http
  • 我需要为 NSObject 调用 [super init] 或 [super initWithCoder] 等

    通常当我从UIclass I 将调用感兴趣的超类初始值设定项 但是 我不确定实施细节NSObject 似乎在成员变量方面没有太多进展 所以我想知道 我需要打电话吗 super init 如果我的子类扩展NSObject 从技术上来说 不 这
  • 如何捕获 Python Unittest 测试用例失败的屏幕截图

    我使用 Python 3 6 5 和以下库 Appium Python 客户端 0 26 单元测试2 1 1 0 硒 3 5 0 pytest 3 6 3 现在我需要截图以防测试失败 所以我故意做了一个错误的陈述self driver fi