java存储RESTAPI响应的最佳方法是什么
我将为我的RESTful API构建e2e测试,并为此使用Cucumber
。
我还将使用cucumber-spring
在stepdef之间共享状态
让我们假设restfulapi是关于zoo的。下面是一些场景
- 客户使用登录/密码在动物园网站注册。我需要在该州存储客户ID。我还需要存储完整的http响应以进行注册,因为我希望能够检查,如果客户提供的密码太弱,http响应是否包含正确的http状态代码李>
- 顾客买了一张去动物园的票。出于同样的原因,我需要存储票据ID和响应李>
好的,到目前为止很容易。但如果:
顾客又买了一张票。如果我使用与第一个票证相同的定义,它将重用相同的状态变量,并且第一个将不再可用。如果我创建另一个定义,我将有重复的代码,这将造成混乱
另一位顾客登记并买票,所以我想确保动物园不会过于拥挤。这里的问题和上面的一样-我应该使用什么定义和什么状态变量
# 1 楼答案
NoraUi框架使这成为一个单例类生命(https://github.com/NoraUi/NoraUi/blob/master/src/main/java/com/github/noraui/utils/Context.java)
可以使用此机制在上下文中存储变量。然后可以用每个场景重置上下文(或者在
Scenario Outline
的情况下重置每个example
)在cucumber代码中,可用于编写:
在cucumber代码中,您可以用于读取:
# 2 楼答案
简单的解决方案是不要尝试过多地重复使用步骤定义。人们在Cucumber上犯的最大错误之一是试图通过步骤定义获得大量重用。只要步骤定义共享帮助器方法,那么有多少步骤定义真的一点都不重要
下面是ruby,但我相信你可以翻译
现在,接下来的场景可以讨论第二张票或家庭票
注意:这里没有重复,所有步骤都调用相同的方法来创建票据(您可以使用参数来处理,购买票据可能需要支持额外的复杂性)