Пример #1
0
    def test_generate_recommendations(self, mock_lb, mock_filter):
        params = self.get_recommendation_params()
        limit = 1

        mock_model = MagicMock()
        params.model = mock_model

        mock_predict = mock_model.predictAll
        candidate_set = self.get_candidate_set()
        users = []

        rdd = recommend.get_candidate_set_rdd_for_user(candidate_set, users)
        mock_predict.return_value = rdd

        df = recommend.generate_recommendations(candidate_set, params, limit)

        mock_predict.assert_called_once_with(candidate_set)

        mock_df = mock_lb.session.createDataFrame
        mock_df.assert_called_once_with(mock_predict.return_value, schema=None)

        mock_filter.assert_called_once_with(mock_df.return_value, limit)

        with self.assertRaises(RecommendationsNotGeneratedException):
            # empty rdd
            mock_predict.return_value = MagicMock()
            recommend.generate_recommendations(candidate_set, params, limit)
Пример #2
0
    def test_get_candidate_set_rdd_for_user(self):
        candidate_set = self.get_candidate_set()
        users = []

        candidate_set_rdd = recommend.get_candidate_set_rdd_for_user(candidate_set, users)
        self.assertTrue(isinstance(candidate_set_rdd, RDD))
        res = sorted([row for row in candidate_set_rdd.collect()])
        self.assertEqual(res, [(1, 1), (2, 2)])

        users = ['vansika']
        candidate_set_rdd = recommend.get_candidate_set_rdd_for_user(candidate_set, users)

        self.assertTrue(isinstance(candidate_set_rdd, RDD))
        row = candidate_set_rdd.collect()
        self.assertEqual([(1, 1)], row)

        users = ['vansika_1']
        with self.assertRaises(EmptyDataframeExcpetion):
            recommend.get_candidate_set_rdd_for_user(candidate_set, users)