首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应该硬编码最单一的断言值,还是可以引用源代码变量?

应该硬编码最单一的断言值,还是可以引用源代码变量?
EN

Stack Exchange QA用户
提问于 2019-06-27 15:11:37
回答 1查看 451关注 0票数 0

非常简化的示例,我试图使语言无关:我有一个XmlView对象,它有一个常量属性FACTORY_NAME标记为“工厂”,一个常量属性VIEW_NAME标记为“视图”。还有一个二维字符串数组,其中包含数字1、3、4 5之间的链接,以及它们的英文、德文和法文字符串表示的本地化变量,它们位于资源文件中。

然后,我在/factory/{id:\\d+}上有一个REST调用,它返回<factory><view>%did:%sid</view></factory>,其中工厂是FACTORY_NAME,视图是任何VIEW_NAME,%did是作为路径参数输入的任何数字,可以是1、3、4或5作为一个数字,%sid是该数字的本地化表示(所以1,ein,un;3,drei,trois;4,即quatre;5,fünf,cinq)。请注意,使用数百个API端点来完成更复杂的事情,实际代码要复杂很多倍,这只是一个例子。

在上面设计的示例中,基本上有三件事我想测试:

  1. 存在/factory/{id:\\d+}端点;
  2. 我在上述端点中输入的任何id号都在预期的响应值中,并且在id属性的允许值中;
  3. 响应XML正是我所期望的。

还有其他需要测试的东西,但是对于这个示例来说,这些都可以。

基于上面的例子,这个测试应该在多大程度上使用硬编码的值和/或迭代来测试这个代码是否返回预期的值?

  • 我是否应该编写4个单独的断言,认为到达工厂端点会给出一个期望值,并在测试中将所接触的端点硬编码,并将XML响应与上面的字符串进行比较?这看起来有点脆弱,因为任何更改都会破坏我的测试,而且我会有很多重复的代码。
  • 我是否应该像上面那样编写4个单独的断言,同样是用硬编码的工厂端点,然后使用Xpath检索变量部分,然后将其与硬编码值进行比较?
  • 我是否应该编写4个独立的断言,但是所有可能是可变的内容都可以从我的代码库的其余部分中检索到?
  • 我应该迭代我的本地化字符串数组并对数组中的每个项执行断言吗?
  • 我该做点别的吗?

我不知道该怎么办。使用现有变量可以在更改某些内容时手动更改大量测试,但这也意味着我只是在检查我的值是否被代码正确处理,而不是这些值本身是否正确。对于这种情况,是否有任何公认的最佳实践?

EN

回答 1

Stack Exchange QA用户

回答已采纳

发布于 2019-06-28 11:24:32

我不认为这里有好或坏,这是一种权衡。

我自己的偏好是硬编码您所断言的值--使您的测试与实现脱钩有其好处。

也就是说,如果实现发生了变化,您想要更改测试而不改变行为吗?

如果您需要更改您的测试,如果实现发生了变化,您可能测试错了东西(或者有一个非常不稳定的API?)

票数 1
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/39746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档