karate在不同Scenario中是否支持重用同一变量?
在使用karate编写单元测试时,想要同一个变量在不同的Scenario中复用,是否可行呢?其实是不可以的。严格来讲,这种情况不应该出现,如果你真的遇到了,应该考虑将其组合到同一个Scenario中才是合理的。
如果你真的那么做了,将会遇到下面这样的一个报错:
ReferenceError: “id” is not defined in eval at line number 1
先给出一段报错,这段报错是因为我在两个场景中使用了id
这个字段,由第一个场景赋值,想在第二个场景中使用场景一的值,然后抛出了上面那段错误。
在查找资料过程中找到这样一段话,翻译成中文就是:如果你想在一个场景
中修改一个变量,并在另一个场景
使用上一个场景
修改后的值,那么你一定是误解了场景
这个概念。
If you are trying to modify a variable in one scenario and expect it to be now having that modified value when the next Scenario starts, you have misunderstood the concept of a Scenario.
那么有这种情况该怎么办呢?
考虑到这是一个串行流,将你的测试步骤组合到一个场景中是最好的。
Just combine your steps into one Scenario, because think about it: that is the “flow” you are trying to test.
为什么karate不支持这种变量处理方式呢?文中提到原因主要有两点。
- 1、每个场景应当是独立的,因为在以后可以随机或并行的执行;
- 2、如果你注释掉一个场景,另外一个场景也能正常工作。
Each Scenario should be able to run stand-alone. In the future the execution order of Scenario-s could even be random or run in parallel. Another way to explain this is - if you comment out one Scenario other ones should continue to work.