pytest和behave分别如何处理测试数据?
时间: 2024-10-20 19:17:35 浏览: 41
**pytest**:
在pytest中,测试数据通常会被放在`@pytest.mark.parametrize`装饰器中的元组、列表或是从外部文件(如csv、json)导入的数据结构中。这个装饰器会将每一个数据项作为一个独立的测试案例运行,每个案例都有一组固定的输入值和期望的结果。例如:
```python
data = [
('value1', 'expected_result1'),
('value2', 'expected_result2')
]
@pytest.mark.parametrize('input, expected', data)
def test_function(input, expected):
assert function_to_test(input) == expected
```
**behave**:
behave则更注重行为描述而非直接的测试数据。它使用Gherkin(一种英语为基础的语法)来编写测试,其中包含了用户故事般的步骤。测试数据通常包含在背景(Background)部分或是在每个步骤(Scenario Outline)中,这些数据会在所有匹配的例子中共享:
```gherkin
# feature.feature
Feature: User actions
Scenario Outline: Updating a value
Given user "<username>" logs in
When they enter "<new_value>"
Then the current value should be "<expected_value>"
Examples:
| username | new_value | expected_value |
| Alice | val1 | res1 |
| Bob | val2 | res2 |
```
在这个例子中,behave会动态生成多个测试实例,每个实例都会使用给定的数据来驱动测试过程。
阅读全文