This is documentation for Orange 2.7. For the latest documentation, see Orange 3.
Testing¶
Orange unit testing¶
This module contains some classes in common use by Orange unit testing framework. In particular its most useful feature is the BaseTestOnData (along with test_on_data function and datasets_driven class decorators) class for automating data driven tests.
Example of use
from Orange.testing import testing
import unittest
data = [("one", 1),
("two", 2)]
# Data driven with data_iter argument
# data must be reiterable multiple times if more than one test member defined
@data_driven(data_iter=data)
class TestDemo(unittest.TestCase):
@test_on_data
def test_instance_on(self, arg):
self.assertIsInstance(arg, int)
@test_on_data
def test_add(self, arg):
res = arg + arg
# data_driven without argument
@data_driven
class TestDemo1(unittest.TestCase):
@test_on_data(data_iter=data)
def test_instance_on(self, arg):
self.assertIsInstance(arg, int)
@test_on_data(data_iter=data)
def test_add(self, arg):
res = arg + arg
# data_driven without arg, using a static data_iter method
@data_driven
class TestDemo1(unittest.TestCase):
@test_on_data
def test_instance_on(self, arg):
self.assertIsInstance(arg, int)
@test_on_data
def test_add(self, arg):
res = arg + arg
@staticmethod
def data_iter():
yield "iris", Orange.data.Table("doc:iris")
#@data_driven(data_iter=testing.datasets_iter(testing.CLASSIFICATION_DATASETS | testing.CLASSLES_DATASETS))
@datasets_driven(data_iter=testing.CLASSIFICATION_DATASETS | testing.CLASSLESS_DATASETS)
class TestDefaultLearner(unittest.TestCase):
@test_on_data
def test_learner_on(self, dataset):
import Orange
Orange.classifcation.majority.MajorityLearner(dataset)
# this overloads the class decorator's flags
@test_on_datasets(testing.CLASSLES_DATASETS)
def test_raise_missing_class_on(self, dataset):
import Orange
Orange.classifcation.majority.MajorityLearner(dataset)