0

我有一个使用 Appium、TestNg、Cucumber、PicoContainer 的原生 iOS 测试框架

我正在寻找最好的方法来存储从一个步骤/场景中获取的数据,以后可以用来断言另一个场景

示例:场景:用户可以用 {var1} 回答调查问题给定用户对调查问题的回答,然后显示成功屏幕

场景:先前回答的问题具有用户最初发送的值 在 reviewMyAnswers 屏幕上给定用户 然后回答 {var1} 的保持值

我只是举个一般的例子。实际上,我有很多这样的数据需要验证,我想将第一个场景的答案存储在单独的类中,然后在需要时通过键和值对以某种方式检索它

public classWhereIstoreTestData() {
ANSWER1;
ANSWER2;
PRODUCT1;
ETC...;
}
@Given(User answers on Survey Question with {var1}{
poSurvey.AnswerOnQuestion;
classWhereIstoreTestData().setValue(key.Answer1,value.poSurvey.getAnswerValue)
@Then(answer hold value of {var1}{

assertThat(classWhereIstoreTestData().getValue(key.Answer1),equalsTo(poSurvey.GetAcceptedAnswerValue)

我看过教程(谷歌上只有几个),但无法获得它们它们看起来都比他们想象的要复杂得多

我的应用程序不是太大,我想我只会使用一个 stepdefs 文件。但我仍然不想为此目的使用静态变量,因为我计划将来使用并行化

4

1 回答 1

0

就像单元测试一样,场景应该相互独立,共享数据使它们相互依赖。这是个问题。特别是。如果您想稍后使用并行执行,则无法保证使用数据的场景不会与产生数据的场景同时运行。

简而言之。除了使用静态变量之外,您不能以任何方式共享数据。

你不应该这样做。与其在特征文件中逐步写出问卷的答案,然后尝试重用这些数据,不如将答案存储在Map<String, String>步骤定义文件中,并使用它来填写问卷的所有问题一步完成。或者,如果您需要填写整个流程以到达您想要测试您的东西的地方,只需一步完成所有这些和问卷调查。

现在,您可能会有几个不同的场景和不同的方式来完成应用程序。如果您从技术上指定这些路径,您将获得相当枯燥的功能文件。但是,如果您使用角色来命名这些变体,它们将变得更容易理解。

Given Jack (the fitness enthusiast) completes the daily exercise task
When Jack fills out a questionnaire prompt about his habits 
Then Jack will receive the fitness enthusiasts advice to workouts
Given Jill (the workaholic) completes the daily exercise task
When Jill fills out a questionnaire prompt about his habits 
Then Jill will receive the workaholics advice to workouts
And an extra set of reminders is scheduled to remind Jill to take an early break 
于 2019-12-26T20:32:37.723 回答