Testing is a vital part of software development. Nose extends unittest to make testing easier.
Run the following command line:
!pip install nose
Save your code to a file with the %%file magic:
%%file type_util.py classTypeUtil:@classmethoddefis_iterable(cls,obj):"""Determines if obj is iterable. Useful when writing functions that can accept multiple types of input (list, tuple, ndarray, iterator). Pairs well with convert_to_list. """try:iter(obj)returnTrueexceptTypeError:returnFalse@classmethoddefconvert_to_list(cls,obj):"""Converts obj to a list if it is not a list and it is iterable, else returns the original obj. """ifnotisinstance(obj,list)andcls.is_iterable(obj):obj=list(obj)returnobj
Overwriting type_util.py
Save your test to a file with the %%file magic:
%%file tests/test_type_util.py fromnose.toolsimportassert_equalfrom..type_utilimportTypeUtilclassTestUtil():deftest_is_iterable(self):assert_equal(TypeUtil.is_iterable('foo'),True)assert_equal(TypeUtil.is_iterable(7),False)deftest_convert_to_list(self):assert_equal(isinstance(TypeUtil.convert_to_list('foo'),list),True)assert_equal(isinstance(TypeUtil.convert_to_list(7),list),False)
Overwriting tests/test_type_util.py
Run the following command line:
!nosetests tests/test_type_util.py -v
core.tests.test_type_util.TestUtil.test_convert_to_list ... ok core.tests.test_type_util.TestUtil.test_is_iterable ... ok ---------------------------------------------------------------------- Ran 2 tests in 0.001s OK