66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
import pytest
|
|
import utils
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input_a, input_b, label",
|
|
[
|
|
(
|
|
"Transformers applied to NLP have revolutionized machine learning.",
|
|
"Transformers applied to NLP have disrupted machine learning.",
|
|
"natural-language-processing",
|
|
),
|
|
],
|
|
)
|
|
def test_invariance(input_a, input_b, label, predictor):
|
|
"""INVariance via verb injection (changes should not affect outputs)."""
|
|
label_a = utils.get_label(text=input_a, predictor=predictor)
|
|
label_b = utils.get_label(text=input_b, predictor=predictor)
|
|
assert label_a == label_b == label
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input, label",
|
|
[
|
|
(
|
|
"ML applied to text classification.",
|
|
"natural-language-processing",
|
|
),
|
|
(
|
|
"ML applied to image classification.",
|
|
"computer-vision",
|
|
),
|
|
(
|
|
"CNNs for text classification.",
|
|
"natural-language-processing",
|
|
),
|
|
],
|
|
)
|
|
def test_directional(input, label, predictor):
|
|
"""DIRectional expectations (changes with known outputs)."""
|
|
prediction = utils.get_label(text=input, predictor=predictor)
|
|
assert label == prediction
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"input, label",
|
|
[
|
|
(
|
|
"Natural language processing is the next big wave in machine learning.",
|
|
"natural-language-processing",
|
|
),
|
|
(
|
|
"MLOps is the next big wave in machine learning.",
|
|
"mlops",
|
|
),
|
|
(
|
|
"This is about graph neural networks.",
|
|
"other",
|
|
),
|
|
],
|
|
)
|
|
def test_mft(input, label, predictor):
|
|
"""Minimum Functionality Tests (simple input/output pairs)."""
|
|
prediction = utils.get_label(text=input, predictor=predictor)
|
|
assert label == prediction
|