带有PicoContainer的Appium Cucumber框架的测试数据类POM

问题描述 投票:0回答:1

我有一个用于本机iOS测试的框架,该框架使用Appium,TestNg,Cucumber,PicoContainer

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

示例:场景:用户可以回答调查问题使用{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)

我看过教程(在Google上只有几个),但无法获取他们似乎都比他们想象的要复杂得多

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

selenium cucumber appium pageobjects picocontainer
1个回答
0
投票
与单元测试非常相似,场景应该彼此独立,并且共享数据使它们彼此依赖。这是个问题。 Esp。如果以后要使用并行执行,则不能保证消耗数据的方案不会与产生数据的方案同时运行。

总之。除了使用静态变量之外,您无法以其他任何方式共享数据。

而且您不必。与其在功能文件中逐步写出调查问卷的答案,然后尝试重用这些数据,不如将答案存储在步骤定义文件的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 
© www.soinside.com 2019 - 2024. All rights reserved.