如何在behave中控制全局计数器?场景计数值不变问题解决
解决Behave中跨Scenario计数器无法累加的问题
你的问题核心在于Behave的Context对象生命周期:每个Scenario都会创建独立的Context实例,直接存在Context上的变量会在Scenario结束后被重置,下一个Scenario的Context会重新继承before_all中初始化的初始值,导致计数器无法持续累加。
以下是两种可行的解决方案:
方案1:使用模块级全局变量
直接在environment.py文件中定义模块级的计数器变量,绕开Context的重置机制:
# 模块级全局计数器 counter = -1 def before_scenario(context, scenario): global counter print(counter) def after_scenario(context, scenario): global counter counter += 1
方案2:利用Context的全局配置存储
Behave提供了context.config.userdata作为全局共享存储,它不会随Scenario的Context重置而丢失数据:
def before_all(context): context.config.userdata['counter'] = -1 def before_scenario(context, scenario): print(context.config.userdata['counter']) def after_scenario(context, scenario): context.config.userdata['counter'] += 1
两种方案都能实现跨Scenario的计数器累加,你可以根据自己的代码习惯选择。
内容的提问来源于stack exchange,提问作者Ahasanul Haque
相关产品推荐
相关产品推荐

