def setup_class(cls, *args, **kwargs): """ Put elements in db """ for app in ITEMS: Item.objects.create(**app) for u in USERS: user = User.objects.create(external_id=u["external_id"]) for i in u["items"]: Inventory.objects.create(user=user, item=Item.get_item_by_external_id(i)) TensorCoFi.train_from_db() Popularity.train_from_db() TensorCoFi.load_to_cache() Popularity.load_to_cache()
def test_training(self): """ [recommendation.models.TensorCoFi] Test train from database """ try: TensorCoFi.train_from_db() except Exception: assert False, "Training is not working for jumping ids" TensorCoFi.load_to_cache() t = TensorCoFi.get_model_from_cache() for user in User.objects.all(): if len(user.owned_items) > 2: assert isinstance(t.get_recommendation(user), np.ndarray), "Recommendation is not a numpy array" else: try: t.get_recommendation(user) except KeyError: pass else: assert False, "User with less than 3 items give a static recommendation"