使用或在 .feature 文件中表现 python
Behave in python using or in .feature fles
我需要 Behave 通过完整场景,即使至少有 1 个元素是正确的,并且在找到 none 个元素时失败。
例如,我曾尝试过类似的操作,但它 returns 对于未找到的元素是错误的,并且仅对于找到的元素是正确的。
Scenario Outline: Elements
When Screen loads
Then Element "<element>" is visible
Examples: Consumer Electronics
| element |
| 1 |
| 2 |
| 3 |
# or this:
Scenario: Elements
When Screen loads
Then Element "1" or "2" or "3" is visible
1.首先,你不能在这种情况下使用场景大纲。
场景大纲实际上会拆分成场景,如果在示例中你有 3 行 (1,2,3) 那么就会有 3 个场景 运行 而每个场景只验证 1 个元素。
2。 Behave (Gerkin) 没有 "OR" 这样的东西。你必须在步骤定义中做你想做的事。
你的第二个场景可以使用:
场景:元素
屏幕加载时
那么元素“1”或“2”或“3”可见
@then('Element "{element1}" or "{element2}" or "{element3}" is visible')
def step_assert_element(context, element1, element2, element3):
elm1 = Page(context.driver).is_element_visible(elm1_locator)
elm2 = Page(context.driver).is_element_visible(elm2_locator)
elm3 = Page(context.driver).is_element_visible(elm3_locator)
assert_that(elm1 or elm2 or elm3, equal_to(True), "Verify One of Element is visible")
我找到了解决方法,允许我在 Behave 中检查 1 个或多个元素并在后续步骤中重用它。幸好它不会破坏我们的代码库,因为如果只检查一个元素它仍然可以工作。
Scenario: Elements
When Screen loads
Then Element "1 or 2 or 3" is visible
@then('Then Element "{element}" is visible')
def step_impl(context, element):
posible_elements = element.split(' or ')
for elem in posible_element:
# make check for each elem
# or save visible element to context.visible_element
我需要 Behave 通过完整场景,即使至少有 1 个元素是正确的,并且在找到 none 个元素时失败。
例如,我曾尝试过类似的操作,但它 returns 对于未找到的元素是错误的,并且仅对于找到的元素是正确的。
Scenario Outline: Elements
When Screen loads
Then Element "<element>" is visible
Examples: Consumer Electronics
| element |
| 1 |
| 2 |
| 3 |
# or this:
Scenario: Elements
When Screen loads
Then Element "1" or "2" or "3" is visible
1.首先,你不能在这种情况下使用场景大纲。 场景大纲实际上会拆分成场景,如果在示例中你有 3 行 (1,2,3) 那么就会有 3 个场景 运行 而每个场景只验证 1 个元素。
2。 Behave (Gerkin) 没有 "OR" 这样的东西。你必须在步骤定义中做你想做的事。
你的第二个场景可以使用:
场景:元素
屏幕加载时
那么元素“1”或“2”或“3”可见
@then('Element "{element1}" or "{element2}" or "{element3}" is visible')
def step_assert_element(context, element1, element2, element3):
elm1 = Page(context.driver).is_element_visible(elm1_locator)
elm2 = Page(context.driver).is_element_visible(elm2_locator)
elm3 = Page(context.driver).is_element_visible(elm3_locator)
assert_that(elm1 or elm2 or elm3, equal_to(True), "Verify One of Element is visible")
我找到了解决方法,允许我在 Behave 中检查 1 个或多个元素并在后续步骤中重用它。幸好它不会破坏我们的代码库,因为如果只检查一个元素它仍然可以工作。
Scenario: Elements
When Screen loads
Then Element "1 or 2 or 3" is visible
@then('Then Element "{element}" is visible')
def step_impl(context, element):
posible_elements = element.split(' or ')
for elem in posible_element:
# make check for each elem
# or save visible element to context.visible_element