方案

时间:2017-03-15 13:05:23

标签: appium bdd cucumber-jvm assertion

我正在编写一个场景来验证BDD中移动应用中的卡片。该卡包含7个元素,每个元素都有一个值或一个副本。这些需要使用预定义的值/计算值进行验证。我想知道,我可以在单个场景中为所有7个元素编写断言,还是用2/3分割它?

2 个答案:

答案 0 :(得分:2)

没有太多细节,所以我不能具体回答。假设您正在使用Python客户端进行Appium测试。在这种情况下使用一些单元测试框架会很好(它可能是Python内置的单元测试模块)。

我建议您在单独的测试用例中验证每个元素。这种方法将使您的生活更轻松 - 您将为每个元素验证获得单独的状态。

谈到“场景可以发生多少断言”问题 - 我相信取决于您使用的工具。使用Python unittest ,您可能在单个测试用例中有很多断言,但这是不好的做法。请阅读以下内容: https://softwareengineering.stackexchange.com/questions/7823/is-it-ok-to-have-multiple-asserts-in-a-single-unit-test

答案 1 :(得分:0)

如果我通过“卡片”知道你的意思,这将是一个帮助,但我们假设这是一张借记卡/信用卡。

我们在这里可以做的只是有一个断言:

Scenario: Adding a new payment method
 Given I have a card with the following details:
  | Name            | Mr Test McTestington |
  | Card Number     | 4567 8901 2345 6789  |
  | Card Type       | Credit               |
  | Issuer          | MasterCard           |
  | Valid From Date | 01/23                |
  | Expiry Date     | 12/34                |
  | Security Code   | 123                  |

  And the card details are valid
 When I add the card as a new payment method
 Then I should be able to checkout the items in my basket with the card
  And I should see the order confirmation screen

And the card details are valid步骤中,您将拥有所有项目的验证码。这可能涉及将这些功能分解为可在其他地方使用的功能:

public boolean validName(string name){
    bool valid = false;
    // validate name - set valid to true if it meets validation criteria
    return valid;
}

作为一个例子(Java不是我的强项,但这只是我的建议的大纲)。

从本质上讲,使黄瓜做得最好,可以用开发团队和业务部门商定的语言描述功能,这样每个人都可以准确理解你的场景中描述的内容。它更多的是谈话而不是测试。

就像我在我的示例中所做的那样,您不一定需要单独验证每张卡片细节吗?

这一切都归结为判断。

如果它确实归结为此判断调用,您认为每个事物都需要单独验证,为什么不使用场景大纲来帮助您?

Scenario Outline: Valid card details
 Given I have a card with the "<detail>" of "<value>"
 Then the card detail "<detail>" should be valid

Examples:
  | detail          | value                |
  | Name            | Mr Test McTestington |
  | Card Number     | 4567 8901 2345 6789  |
  | Card Type       | Credit               |
  | Issuer          | MasterCard           |
  | Valid From Date | 01/23                |
  | Expiry Date     | 12/34                |
  | Security Code   | 123                  |