如果我在一个类中有多个测试并且前面的测试失败,我如何让它跳过或退出该类而不是测试其余的测试?

2024-02-21

我将 Python 与 Selenium 和 unittest 结合使用。我在一堂课中有四个测试,因为它们都是相关的单元测试。如果前面的测试失败,如何让它跳过下一个测试?我已经阅读了unittest的skip方法的所有文档,但没有一个正是我所需要的。有没有办法告诉它退出课堂?

这是我的代码当前的要点:

def test_dealer_search_id_contains(self):
    try:
        LoginPage.login(self, ULV.AA_USERNAME, ULV.AA_PASSWORD)
    except TimeoutException:
        add_test_result(3, 5, "This test failed attempting to login with the user's credentials.")
        add_test_result(4, 2, 'This test is blocked due to failure of a preceding test.')
        self.fail(msg='Dealer: Search - Test failure.')

def test_dealer_search_id_exact(self):
    code for this test here

我如何让它跳过剩余的测试或一起退出课程?

我感谢您能提供的任何帮助。

编辑:我使用 PyTest 作为我的运行程序,并且在这些测试之后我确实有其他测试需要继续运行,只是不在此类或 .py 文件中。

编辑:所以这种情况下的测试都取决于之前的测试是否通过,否则它将因与上述测试相同的缺陷而失败。然而,我的主要困境是我不确定如何告诉它跳过这些测试并继续 PyTest 已选择的其余测试。我查看了 PyTest 的跳过处理,它与单元测试几乎相同。如果不必要的话,我试图避免在测试失败的逻辑检查中进行编码,但这似乎可能是唯一的解决方案。


我想我找到了可以解决这个问题的方法。它被称为incremental testing在 py.test 框架中:https://pytest.org/latest/example/simple.html#incremental-testing-test-steps https://pytest.org/latest/example/simple.html#incremental-testing-test-steps

我在本地进行了测试 - 效果非常好!

用过同样的conftest.py如 py.test 文档中所示。 测试文件略有不同:

# content of test_incremental.py

import pytest

@pytest.mark.incremental
class TestUserHandling:
    def test_login(self):
        assert 1
    def test_modification(self):
        assert 0
    def test_deletion(self):
        assert 1
    def test_foo(self):
        assert 1


class TestAnotherStuff:
    def test_normal(self):
        assert 1

mac:[incremental_testing]: py.test -v test_incremental.py 
============================================================================== test session starts ===============================================================================
platform darwin -- Python 2.7.11, pytest-2.9.1, py-1.4.31, pluggy-0.3.1 -- /Library/Frameworks/Python.framework/Versions/2.7/Resources/Python.app/Contents/MacOS/Python
cachedir: .cache
rootdir: /Users/dmitry.tokarev/Repos/playground/incremental_testing, inifile: 
plugins: hidecaptured-0.1.2, instafail-0.3.0
collected 5 items 

test_incremental.py::TestUserHandling::test_login PASSED
test_incremental.py::TestUserHandling::test_modification FAILED
test_incremental.py::TestUserHandling::test_deletion xfail
test_incremental.py::TestUserHandling::test_foo xfail
test_incremental.py::TestAnotherStuff::test_normal PASSED

==================================================================================== FAILURES ====================================================================================
_______________________________________________________________________ TestUserHandling.test_modification _______________________________________________________________________

self = <test_incremental.TestUserHandling instance at 0x103b7a5a8>

    def test_modification(self):
>       assert 0
E       assert 0

test_incremental.py:10: AssertionError
================================================================= 1 failed, 2 passed, 2 xfailed in 0.02 seconds ==================================================================
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我在一个类中有多个测试并且前面的测试失败,我如何让它跳过或退出该类而不是测试其余的测试? 的相关文章

随机推荐

  • Oracle 数据库查询在第二次运行时抛出错误

    我有一个 VBA 代码 我在其中调用 oracle 使用 ODBC 检索数据两次 第一次数据检索没问题 但第二次却说 RunTime Error 2147467259 80004005 Unspecified error 我的代码如下 注意
  • 如何禁用 NSDocument 的窗口标题弹出窗口

    我有一个基于 NSDocument 的应用程序 启用了自动保存 I d like to prevent this popup from showing 我尝试从 NSWindow 的 title representedFilename 和
  • 如何在访问 laravel 环境和类时在命令行上运行 php 脚本

    我在 Web 服务器上有一个 laravel 3 环境 但我想在命令行上运行 php 脚本 我想访问 laravel 环境中的任何 php 脚本 例如控制器 模型或视图文件 访问的相同类和方法 我怎样才能做到这一点 我强烈建议您将 PHP
  • Python - SQLite JSON1 加载扩展

    我想在 Python 中使用 SQLite 的 json1 扩展 根据官方文档 http sqlite org json1 html 它应该是一个可加载的扩展 我从以下位置获取了 json1 c 文件source http sqlite o
  • 在Python中解压文件

    我通读了zipfile文档 https docs python org 3 library zipfile html 但不明白如何unzip一个文件 仅介绍如何压缩文件 如何将 zip 文件的所有内容解压缩到同一目录中 import zip
  • Haskell:在更新函数中引用先前更新的列表元素

    假设我有以下定义 data Book Book id Int title String type Shelf Book 假设我有一个假设的功能 upd用于更新 updShelf Shelf gt Shelf updShelf all boo
  • OSGI环境中单例的迁移解决方案

    我正在 Java EE 环境中工作 其中每个应用程序都位于其自己的 war 文件中 在每个应用程序 war 文件的 WEB INF lib 中 有一个由所有应用程序共享的公共 jar 这个公共 jar 包含几个可以从代码中的许多点访问的单例
  • 从 HashMap 获取值时为什么需要双 & 符号?

    我在 Rust 中的引用方面遇到了一些麻烦 我有以下无法编译的代码 use std collections HashMap fn main let mut map HashMap new map insert 0 0 map insert
  • 按发布降序显示帖子

    我正在尝试测试 Firebase 以允许用户使用以下方式发表评论push 我想用以下内容显示我检索到的数据 fbl child sell limit 20 on value function fbdata handle data displ
  • 当向 RecyclerView ListAdapter 提交新列表时,差异检查始终为 areContentsTheSame() 返回 true

    我正在使用 MVVM 架构来构建一个简单的订购应用程序 我在 ProductsFragment 中使用 RecyclerView 来列出所有可以订购的产品 我还在我的 ViewModel 中使用 LiveData 并在我的 Fragment
  • 满足我需求的强制门户

    我正在为我的组织寻找强制门户 我看到很多这样的应用程序将允许用户在 a 输入凭据或 b 付款后通过 我正在寻找的东西有点不同 让我介绍一些有关我的系统的基础知识 我正在使用活动目录和内部 DNS 运行基于 Windows 的网络 我有一个内
  • jquery Flexslider 手动控件不起作用

    我正在尝试为 flexslider 插件实现手动控制 这是我的代码 div class container div class columns row div class flexslider ul class slides li styl
  • 从 Flask-sqlalchemy 中的连接查询读取

    成功连接两个数据库表后 我尝试通过寻址第一个表来读取第二个表中的数据 我正在致辞opinion topic name来自我的 jinja2 模板 但没有返回任何内容 如何从连接的查询中访问 Topic topic name 值 view m
  • 内联图像未从 GatsbyJS 中的 markdown 文件正文加载

    我正在尝试使用 gatsby remark images 在我的 markdown 文件中使用内联图像 不幸的是 该图像无法加载到我的本地主机上 我不知道这是否只是语法错误 或者我错过了一些重大的东西 这是config https gith
  • __iter__ 是如何工作的?

    尽管阅读了它 但我仍然不太明白如何 iter 作品 一个简单的解释是什么 我见过def iter self return self 我不知道这是如何工作的 也不知道这是如何工作的步骤 我可以简单地说 iter 在类上定义一个方法 该方法将返
  • JXTable 列排序在 1.0 和 1.6 之间发生变化

    自从我们更新到 JDK1 6 以来 我最近将应用程序中的 SwingX 库从版本 1 0 更新到了 1 6 2 我知道排序已更改为重新使用 JDK 1 6 中引入的一些核心 JDK 组件 但是 在版本 1 0 中 可以通过单击标题对列进行排
  • 为什么相同时间的 Unix 时间戳在不同时区不同

    Why 7 18 2013 11 33GMT 时区和我当地的时区 亚洲 加尔各答 是否不同 由于 Unix 时间戳是自纪元时间以来计算的刻度1 1 1970 00 00 00 GMT所以我知道纪元时间在不同时区的不同间隔发生 但仍然如此 经
  • 在 C++ 11 中创建动态二维矩阵的好方法

    我已经知道如何使用创建动态二维矩阵new并使用释放它delete 由于 C 11 具有许多新的内存功能 例如unique ptr array容器等 创建 2D 矩阵的一种好方法是什么 这样就不需要显式地使用释放矩阵delete操作员 最简单
  • Laravel 5 不从点 ENV 文件读取值

    我不知道这个问题是否相关 LARAVEL 5 仍处于开发阶段 在观看了有关 LARAVEL 5 新功能的 Laracast 视频之一后 我已经拉取了 LARAVEL 5 我迫不及待地等待它的正式发布 我命名了本地环境dot文件为 env l
  • 如果我在一个类中有多个测试并且前面的测试失败,我如何让它跳过或退出该类而不是测试其余的测试?

    我将 Python 与 Selenium 和 unittest 结合使用 我在一堂课中有四个测试 因为它们都是相关的单元测试 如果前面的测试失败 如何让它跳过下一个测试 我已经阅读了unittest的skip方法的所有文档 但没有一个正是我