python pytest-bdd 如何在conftest中获取step_defs里的scenario数量
时间: 2024-09-15 16:07:34 浏览: 42
pytest-bdd:py.test运行程序的BDD库
5星 · 资源好评率100%
在`pytest-bdd`中,在`conftest.py`文件中获取`step_defs`目录下的Scenario(场景)数量,你可以通过导入`steps`模块并使用Python的内置`len()`函数来计算。假设`step_defs`目录下都是`Scenario`类的定义,可以这样做:
```python
# 假设我们有一个名为steps的模块,其中包含Scenario类
from . import steps
# 获取Scenario类的数量
num_scenarios = len(steps.__file__.split('.')[:-1]) if '.' in steps.__file__ else len(glob.glob(f'{os.path.dirname(steps.__file__)}/*.py')) - 1
```
这里我们先尝试从`steps`模块的文件路径中提取出Python文件数量,如果`steps`模块直接导入的是一个模块(如`steps.py`),则`__file__`将是模块名称;如果它是包(如`steps`),则我们需要使用`os.path.dirname(steps.__file__)`来获取其父目录并搜索`.py`文件。
注意:这段代码假设`steps`模块是在当前目录的`step_defs`子目录中,如果不是,则需要相应调整路径。另外,`glob.glob()`用于查找目录下的所有Python文件,`-1`是因为`glob.glob()`会返回目录自身(最后一个元素)。
阅读全文