Pytest

系列文章目录



一、pytest使用

1. 测试function

  1. ETL伪代码
import pandas as pd


def add(a, b):
    return a + b

# Function to load the CSV
def load_data(file_name):
    data = pd.read_csv(file_name)
    return data

# Function to clean the data
def clean_data(data):
    data = data.dropna()
    return data
  1. 创建测试文件,在test/common/test_etl_process.py

2. 测试普通方法

  • 这里我们测试add()方法
def test_add():
	assert add(1,2) ==3
	assert add(2,5) == 7
  • 运行
pytest -v

3. 添加测试数据急

  • 在测试数据时,我们需要将测试数据集加载
@pytest.fixture
def make_fake_csv_file(tmp_path):
    df = pd.read_csv('data_test_sample.csv') # Load the sample data
    file_path = tmp_path / "data.csv" # create a temporary test file path
    df.to_csv(file_path, index=False) # Save the sample data to the temporary file
    return file_path # Return the temporary file path
  1. 根据后面的程序,return,由于下面程序需要一个文件路径,所以这里返回的文件路径;
  2. 如果后面程序需要使用返回值,直接使用function名传递给下面的程序当参数
  3. 需要传递给下一个方法测试的,都需要添加@pytest.fixture

4. 测试load_data

  • 从etl的代码得知,load_data需要传递的是一个file_path,而我们也将测试数据集的path返回了出来

@pytest.fixture
def test_load_data(make_fake_csv_file): 
    data = load_data(make_fake_csv_file)
    assert not data.empty
    assert list(data.columns) == ['id','name', 'age'] #测试列明是否相等
    assert data.shape[0] == 61 # 测试行是否是61行
    return data 

需要将加载后的数据传递给下一个clean_data,所以使用了@pytest.fixture

5. 测试clean_data

  • 直接使用 test_load_data里返回的数据
def test_clean_data(test_load_data):
    df = clean_data(test_load_data)
    df = df.dropna()
    assert df.isnull().sum().sum() == 0  # Should have no missing values

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值