def test_run_1(self): # should have the same output as test_run_2, but _do_multiprocessing() is a MagicMock in_a = Series([1, 2, 1, 1, 3, 1, 4, 5, 3, 2, 1]) in_b = Series([1, 2, 1, 1, 3, 1, 4, 5, 3, 2, 1]) in_c = Series([1, 2, 1, 1, 3, 1, 4, 5, 3, 2, 1]) in_series = [in_a, in_b, in_c] expected = DataFrame( { 0: Series({1: 5, 2: 2, 3: 2, 4: 1, 5: 1}), 1: Series({1: 5, 2: 2, 3: 2, 4: 1, 5: 1}), 2: Series({1: 5, 2: 2, 3: 2, 4: 1, 5: 1}), u"all": Series({1: 15, 2: 6, 3: 6, 4: 3, 5: 3}), } ) exp = FrequencyExperimenter(in_series) exp._do_multiprocessing = mock.MagicMock() exp._do_multiprocessing.return_value = [ (0, Series({1: 5, 2: 2, 3: 2, 4: 1, 5: 1})), (1, Series({1: 5, 2: 2, 3: 2, 4: 1, 5: 1})), (2, Series({1: 5, 2: 2, 3: 2, 4: 1, 5: 1})), ] actual = exp.run() exp._do_multiprocessing.assert_called_once_with(experimenter_func, [[(0, in_a)], [(1, in_b)], [(2, in_c)]]) self.assertEqual(len(expected.columns), len(actual.columns)) for i in expected.columns: self.assertSequenceEqual(list(expected.loc[:, i].index), list(actual.loc[:, i].index)) self.assertSequenceEqual(list(expected.loc[:, i].values), list(actual.loc[:, i].values))