pytest bdd
时间: 2025-01-07 15:06:56 浏览: 3
### pytest-bdd简介
pytest-bdd是一个用于行为驱动开发(BDD)的框架,它允许开发者通过自然语言描述测试场景并将其绑定到Python代码中的函数上[^1]。
### 安装pytest-bdd
为了使用pytest-bdd,首先需要安装该库。可以通过pip来完成这一操作:
```bash
pip install pytest-bdd
```
### 创建特性文件
特性文件通常位于`features/`目录下,并以`.feature`作为扩展名。这些文件包含了业务逻辑的具体描述以及预期的行为模式。每一个特征都由多个情景组成,而每个情景又可以细分为给定条件、执行动作和期望的结果[^2]。
### 编写步骤定义
对于上述提到的情景,在`steps/`目录内创建相应的Python模块用来实现具体的自动化测试逻辑。每一步骤对应于一个装饰器形式的方法,比如@given, @when 和@then等标签分别表示前置状态设定、触发事件处理及最终验证过程[^3]。
#### 步骤定义样例
假设有一个简单的登录功能要被测试,则可以在对应的.py文件里这样编写:
```python
from pytest_bdd import scenarios, given, when, then
import requests
scenarios('login.feature')
@given('the user is on the login page')
def step_the_user_is_on_login_page():
pass # 实际应用中这里会有一些初始化工作
@when('they submit a POST request with valid credentials')
def step_they_submit_a_post_request_with_valid_credentials(api_client):
response = api_client.post('/api/login', json={'username': 'testuser', 'password': 'secret'})
assert response.status_code == 200
return {'response': response}
@then('a successful authentication token should be returned')
def step_a_successful_authentication_token_should_be_returned(context):
data = context['response'].json()
assert 'token' in data and isinstance(data['token'], str)
```
### 运行测试案例
最后只需要运行常规的pytest命令即可自动发现并执行所有的bdd风格测试用例:
```bash
pytest --tb=short -v features/
```
阅读全文