我正在使用behave固定装置在测试运行期间创建一个计数器。我在before_all
钩子中初始化计数器,然后在每次运行方案时在before_scenario
中递增计数器。
我认为before_all
在整个测试期间运行一次,如果将变量添加到上下文中,以后可以使用。
在这里,我正在context.i = 0
中初始化before_all
,但是在before_scenario
中,每次运行场景时,context.i
的值都会再次设置为0。
environment.py
def before_all(context):
context.i = 0
def before_scenario(context, scenario):
context.i = context.i + 1
我希望每次运行都增加i
。但这始终设置为1
。
答案 0 :(得分:1)
对于那些有类似目的的人。您可以使用 dict 属性并将变量存储为键。这样,每次将新堆栈添加到框架时,上下文字典都会被保留。
def before_all(context):
context.mydata = {}
context.i = 0 // will be overridden
context.mydata['i'] = 1 // will be preserved
def before_scenario(context, scenario):
context.mydata['i'] += 1
context.i += 1
return
答案 1 :(得分:0)
在before_scenario中定义的上下文用户变量只能在场景lifycycle中访问。当跑步者开始下一个场景时,在上一个场景中定义的context.i
不再存在,因此它使用在before_all挂钩中定义的变量。
我猜你不能更改在before_all挂钩中定义的上下文用户变量。