superbenchmark/tests/analyzer/test_summaryop.py

71 строка
3.0 KiB
Python

# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
"""Tests for SummaryOp module."""
import unittest
from numpy import NaN, float64
import pandas as pd
from superbench.analyzer import SummaryOp, SummaryType
class TestSummaryOp(unittest.TestCase):
"""Test for Summary Ops."""
def test_rule_op(self):
"""Test for defined rule operators."""
# Test - get_rule_func
# Negative case
assert (not SummaryOp.get_summary_func('fake'))
# Positive case
summary_op = SummaryOp.get_summary_func(SummaryType.MEAN)
assert (summary_op == SummaryOp.mean)
summary_op = SummaryOp.get_summary_func(SummaryType.PENCENTILE)
assert (summary_op == SummaryOp.percentile)
summary_op = SummaryOp.get_summary_func(SummaryType.MIN)
assert (summary_op == SummaryOp.min)
summary_op = SummaryOp.get_summary_func(SummaryType.MAX)
assert (summary_op == SummaryOp.max)
summary_op = SummaryOp.get_summary_func(SummaryType.STD)
assert (summary_op == SummaryOp.std)
summary_op = SummaryOp.get_summary_func(SummaryType.COUNT)
assert (summary_op == SummaryOp.count)
# Test - _check_raw_data_Df
# Negative case
empty_data_df = pd.DataFrame()
self.assertRaises(Exception, SummaryOp._check_raw_data_df, empty_data_df)
self.assertRaises(Exception, SummaryOp._check_raw_data_df, None)
data1 = [[1, 2, 3, 4], [4, 5, 6], [7, 8]]
raw_data_df = pd.DataFrame(data1, columns=['a', 'b', 'c', 'd'])
# Test - mean
result = SummaryOp.mean(raw_data_df)
expectedResult = pd.Series([4.0, 5.0, 4.5, 4.0], index=['a', 'b', 'c', 'd'])
pd.testing.assert_series_equal(result, expectedResult)
# Test - min
result = SummaryOp.min(raw_data_df)
expectedResult = pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'], dtype=float64)
pd.testing.assert_series_equal(result, expectedResult)
# Test - max
result = SummaryOp.max(raw_data_df)
expectedResult = pd.Series([7, 8, 6, 4], index=['a', 'b', 'c', 'd'], dtype=float64)
pd.testing.assert_series_equal(result, expectedResult)
# Test - std
result = SummaryOp.std(raw_data_df)
print(result)
expectedResult = pd.Series([3.0, 3.0, 2.1213203435596424, NaN], index=['a', 'b', 'c', 'd'], dtype=float64)
pd.testing.assert_series_equal(result, expectedResult)
# Test - count
result = SummaryOp.count(raw_data_df)
print(result)
expectedResult = pd.Series([3, 3, 2, 1], index=['a', 'b', 'c', 'd'])
pd.testing.assert_series_equal(result, expectedResult)
# Test - pencentile
result = SummaryOp.percentile(raw_data_df, 50)
print(result)
expectedResult = pd.Series([4.0, 5.0, 4.5, 4.0], index=['a', 'b', 'c', 'd'], dtype=float64)
pd.testing.assert_series_equal(result, expectedResult, check_names=False)
self.assertRaises(Exception, SummaryOp.percentile, 200)