Add python_sampling_tool/tests/test_main.py
This commit is contained in:
parent
b1f6ef7e55
commit
d0187f9e68
1 changed files with 44 additions and 0 deletions
44
python_sampling_tool/tests/test_main.py
Normal file
44
python_sampling_tool/tests/test_main.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import pytest
|
||||
from python_sampling_tool import main
|
||||
|
||||
|
||||
def test_stratified_sampling_total_size():
|
||||
sample_size = 20
|
||||
num_jobs = 5
|
||||
samples = main.perform_stratified_sampling(sample_size, num_jobs)
|
||||
assert isinstance(samples, list)
|
||||
# Gesamte Anzahl der Datenpunkte sollte der Samplegröße entsprechen
|
||||
total_points = sum(s['data_points'] for s in samples)
|
||||
assert total_points == sample_size
|
||||
# Jeder Eintrag sollte einen Job-Identifier enthalten
|
||||
for s in samples:
|
||||
assert 'job_id' in s
|
||||
assert 'data_points' in s
|
||||
assert isinstance(s['data_points'], int)
|
||||
assert isinstance(s['job_id'], str)
|
||||
|
||||
|
||||
def test_stratified_sampling_balanced_distribution():
|
||||
sample_size = 15
|
||||
num_jobs = 3
|
||||
samples = main.perform_stratified_sampling(sample_size, num_jobs)
|
||||
# Prüfe, dass alle Jobs berücksichtigt sind
|
||||
job_ids = [s['job_id'] for s in samples]
|
||||
assert len(job_ids) == num_jobs
|
||||
# Verteilung der Datenpunkte sollte einigermaßen gleichmäßig sein
|
||||
counts = [s['data_points'] for s in samples]
|
||||
avg = sum(counts) / num_jobs
|
||||
for c in counts:
|
||||
assert abs(c - avg) <= 1
|
||||
|
||||
|
||||
def test_stratified_sampling_small_sample():
|
||||
sample_size = 3
|
||||
num_jobs = 5
|
||||
samples = main.perform_stratified_sampling(sample_size, num_jobs)
|
||||
# Summe sollte immer noch der Samplegröße entsprechen
|
||||
total_points = sum(s['data_points'] for s in samples)
|
||||
assert total_points == sample_size
|
||||
# Nicht mehr Jobs als Samples erhalten Datenpunkte
|
||||
nonzero = [s for s in samples if s['data_points'] > 0]
|
||||
assert len(nonzero) <= sample_size
|
||||
Loading…
Reference in a new issue