behave无法识别environment.py,before_all钩子不执行问题求助
Behave框架before_all钩子不执行问题排查
1. 先查environment.py的位置和命名
- 必须把
environment.py放在features目录的根目录里,放子目录里behave根本找不到。 - 文件名得是全小写的
environment.py,大小写错了直接白搭。
2. 核对钩子函数的写法
before_all函数必须带context参数,写法得是这样:def before_all(context): # 你的钩子逻辑 pass- 函数名必须是精确的
before_all,多写个字母、大小写混写都会导致触发不了。
3. 排查钩子代码里的语法错误
- 直接单独跑一遍environment.py,看看有没有语法问题:
python environment.py - 要是有缩进错、变量没定义、导入失败这类问题,整个钩子就跑不起来,behave可能不会明说,直接跳过钩子执行。
4. 检查behave的运行路径和命令
- 得在项目根目录下执行behave命令,别在features子目录里跑。比如你项目结构是:
就得在「项目根目录」下敲项目根目录/ features/ environment.py 测试用例.feature steps/ 步骤实现.pybehave,别进到features目录里跑。
5. 验证版本兼容性
- 你用的behave 1.2.6和Python 3.8.5本身兼容,但可以试试更到1.2.7稳定版测试:
pip install --upgrade behave==1.2.7 - 也可以看看依赖包有没有冲突,跑
pip list查下parse、six这些依赖的版本是不是兼容。
6. 开调试日志看细节
- 执行behave时加
--verbose参数,看详细日志:
要是日志里没提加载environment.py,说明框架没找到这个文件;要是有加载失败的提示,跟着提示查就行。behave --verbose
内容的提问来源于stack exchange,提问作者UMANG BHATIA
相关产品推荐
相关产品推荐

