Does cross_validate in scikit-learn automatically fits and train the model?
Yes, you do not need to fit or train explicitly when using cross_validate(). Also see this example from the SKLearn documentation:

from sklearn import datasets, linear_model
from sklearn.model_selection import cross_validate
from sklearn.metrics import make_scorer
from sklearn.metrics import confusion_matrix
from sklearn.svm import LinearSVC
diabetes = datasets.load_diabetes()
X = diabetes.data[:150]
y = diabetes.target[:150]
lasso = linear_model.Lasso()
cv_results = cross_validate(lasso, X, y, cv=3)


Just as in your case you can already get the results with no further steps, e.g.

cv_results['test_score']


gives this:

OUT: array([0.33150734, 0.08022311, 0.03531764])