如何将pandas处理的数据分批 传给pytest 做自动化 注意不同条件的数据量不一样 处理结束后再重新拿数据处理
时间: 2023-12-06 14:39:50 浏览: 73
可以使用 `yield` 关键字来实现数据分批传递和处理。具体步骤如下:
1. 使用 pandas 将需要处理的数据读取到内存中,并进行必要的数据处理。
2. 编写一个生成器函数,使用 `yield` 关键字将处理后的数据分批返回。生成器函数可以根据不同条件的数据量来动态地生成不同大小的数据批次。
3. 在 pytest 测试用例中,调用生成器函数获取数据批次,并进行测试。
4. 处理完当前数据批次后,再次调用生成器函数获取下一批数据,重复步骤3和4直到所有数据处理完成。
以下是一个示例代码:
```python
import pandas as pd
# 读取需要处理的数据到内存中
data = pd.read_csv('data.csv')
# 对数据进行必要的处理
...
# 编写一个生成器函数来分批传递数据
def data_generator(batch_size):
for i in range(0, len(data), batch_size):
yield data.iloc[i:i+batch_size]
# pytest 测试用例
def test_data_processing():
# 初始化生成器
generator = data_generator(batch_size=100)
# 处理第一批数据
batch = next(generator)
assert len(batch) == 100
# 进行测试
...
# 处理第二批数据
batch = next(generator)
assert len(batch) <= 100
# 进行测试
...
# 重复处理数据直到所有数据处理完成
for batch in generator:
assert len(batch) <= 100
# 进行测试
...
```
在该示例中,我们使用 `pandas` 将数据读取到内存中,并编写了一个生成器函数 `data_generator` 来分批传递数据。在 pytest 测试用例中,我们首先初始化生成器,然后重复调用 `next` 函数来获取数据批次并进行测试,直到所有数据处理完成。需要注意的是,测试用例中每个 `assert` 语句都应该与当前数据批次相关联。
阅读全文