You can also just get the missing columns and add them to the test dataset:
# Get missing columns in the training test
missing_cols = set( train.columns ) - set( test.columns )
# Add a missing column in test set with default value equal to 0
for c in missing_cols:
test[c] = 0
# Ensure the order of column in the test set is in the same order than in train set
test = test[train.columns]
This code also ensure that column resulting from category in the test dataset but not present in the training dataset will be removed