【问题标题】:Resource cleanup after each test每次测试后的资源清理
【发布时间】:2020-12-05 22:42:54
【问题描述】:

我正在使用机器人框架来测试 REST API,因此我必须创建许多临时资源(测试用户或任何其他资源)。这些是在关键字中抽象出来的,但我需要在每次测试后清理它们。但是我不想担心在每个测试中明确地清理它,因为它需要我们的测试用例在不同的抽象级别上“播放”。

最好在测试用例完成后运行关键字拆解,而不是在关键字完成后立即运行。

我做了一些研究,但还没有找到解决问题的好方法。

是否有任何解决方案可以在测试用例结束时清理在关键字中创建的资源,而无需在测试用例中明确执行?

这里有一个代码示例来说明这种情况:

helper.robot

*** Keywords ***
    a user exists
       create a user

    Delete user
       actually remove the user

test.robot 资源助手.robot

*** Test Cases ***
test user can login
    Given a user exists
    When user login
    Then it succeeds

    [Teardown]    Delete user

我想要的是将拆解移出测试用例,以其他方式在每个测试用例之后删除用户,但不指定是否在每个测试用例中。我不想在设置级别配置精确的拆解,因为我们并不总是对所有测试用例使用相同的资源。

【问题讨论】:

  • 那么你的问题到底是什么?你确实提到了拆解,所以你显然很熟悉这个概念;您想知道 - 它是如何在 RobotFramework 中使用的?或者在哪里设置它,在单独的测试或套件声明中的毯子上?或者它应该如何包含您的所有资源? :) 很难推断,到目前为止你所说的是一个陈述,而不是一个真正的问题:)
  • 我正在寻找解决问题的解决方案,然后我尝试了建议的解决方案。我想要的是一种清理在关键字内部创建的资源的方法,从而在测试用例中抽象出来,而不必从测试用例级别管理这种清理。拆解解决方案不起作用,因为它要么运行到早期(如果在关键字中)或在错误的抽象级别(在测试用例中)
  • teardown 在每次测试后或每个套件后执行。不是在每个关键字之后。您面临的问题是什么?
  • @PDHide 这个例子更清楚了吗?
  • 让我再次尝试一下我对您的问题的理解-阅读 cmets,我认为您尝试完成的是-定义了一次的通用拆卸/清理,它将仅删除在具体情况(不是其他情况,不是在这里创建,但可能在其他情况下)?

标签: robotframework


【解决方案1】:

https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html#test-setup-and-teardown

在撰写本文时,唯一的特殊标签是机器人:退出,即 优雅地停止测试执行时自动添加到测试中, 和robot:no-dry-run,可用于禁用空运行模式。 未来可能会添加更多用途。 2.2.6 测试设置和拆卸

Robot Framework 具有与以下类似的测试设置和拆卸功能 许多其他测试自动化框架。简而言之,测试设置是 在测试用例之前执行的东西,测试拆解是 在测试用例之后执行。在 Robot Framework 设置和拆卸中 只是带有可能参数的普通关键字。

设置和拆卸始终是一个关键字。如果他们需要采取 照顾多个单独的任务,可以创建更高级别的 为此目的的用户关键字。另一种解决方案正在执行 多个关键字使用 BuiltIn 关键字运行关键字。

测试拆解在两个方面是特殊的。首先,它被执行 当测试用例失败时,它也可以用于清理活动 无论测试用例状态如何,都必须这样做。此外,所有 拆解中的关键字也会被执行,即使其中之一 失败。这种继续失败功能也可以与 普通关键字,但在拆解中默认开启。

为测试用例指定设置或拆卸的最简单方法 测试用例文件正在使用中的测试设置和测试拆解设置 设置表。个别测试用例也可以有自己的设置 或拆解。它们是使用 [Setup] 或 [Teardown] 设置定义的 在测试用例表中,它们覆盖了可能的测试设置和测试 拆解设置。在 [Setup] 或 [Teardown] 之后没有关键字 设置意味着没有设置或拆卸。也可以使用 值 NONE 表示测试没有设置/拆卸。

*** Settings ***
Test Setup       Open Application    App A
Test Teardown    Close Application

*** Test Cases ***
Default values
    [Documentation]    Setup and teardown from setting table
    Do Something

Overridden setup
    [Documentation]    Own setup, teardown from setting table
    [Setup]    Open Application    App B
    Do Something

No teardown
    [Documentation]    Default setup, no teardown at all
    Do Something
    [Teardown]

No teardown 2
    [Documentation]    Setup and teardown can be disabled also with special value NONE
    Do Something
    [Teardown]    NONE

Using variables
    [Documentation]    Setup and teardown specified using variables
    [Setup]    ${SETUP}
    Do Something
    [Teardown]    ${TEARDOWN}

如果您在设置中提供它,它可以按您的意愿工作,您不必为每个测试用例指定

【讨论】:

  • 这只是解释了tear down的用法,并没有解决主要问题是清理实际上在更深抽象级别创建的资源。
  • @JonatanCloutier creata 关键字,在拆解中调用它
  • 这正是我给出的示例,我们想要更改,因为我们确实需要在高级别知道清理需要在低级别。
  • @Jonatan robotframewrk 只是 python 的一个抽象,所以如果你不想拆机,那就在监听器类中这样做
  • 这可能与侦听器类有关,但并不像我希望的那样简单。感谢您的建议
猜你喜欢
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-05
  • 2019-11-26
相关资源
最近更新 更多