“Transcendental-Programmer”
FEAT: added server coordination and model aggregation logic
754afec
raw
history blame
1.43 kB
"""test_client.py module."""
import pytest
import tensorflow as tf
import yaml
from src.client.data_handler import FinancialDataHandler
from src.client.model import FederatedClient
@pytest.fixture
def config():
"""Load test configuration."""
with open('config/client_config.yaml', 'r') as f:
return yaml.safe_load(f)['client']
def test_data_handler(config):
"""Test data handler functionality."""
handler = FinancialDataHandler(config)
# Test data simulation
data = handler.simulate_financial_data(num_samples=100)
assert len(data) == 100
assert all(col in data.columns for col in [
'transaction_amount',
'account_balance',
'transaction_frequency',
'credit_score',
'days_since_last_transaction'
])
# Test preprocessing
dataset, scaler = handler.get_client_data()
assert isinstance(dataset, tf.data.Dataset)
def test_federated_client(config):
"""Test federated client functionality."""
client = FederatedClient(config)
# Test model building
assert isinstance(client.model, tf.keras.Model)
# Test local training
handler = FinancialDataHandler(config)
dataset, _ = handler.get_client_data()
training_result = client.train_local_model(dataset, epochs=1)
assert 'client_id' in training_result
assert 'weights' in training_result
assert 'metrics' in training_result