I do not recommend using the 'filter' method, because it returns the entire dataframe and not good for larger datasets.
Instead, pandas provides regex filtering of columns using str.match:
df.columns.str.match('.*Test.*')
# array([ True, False, False, False])
(this will return boolean array for 'Test' anywhere in the column names, not just at the start)
Use .loc to designate the columns using the boolean array. Note that '~' inverts the boolean array, since we want to drop (not keep) all those columns that contain 'Test'
df = df.loc[:, ~df.columns.str.match('.*Test.*')]
In this way, only the columns names are needed for the filtering and we never need to return a copy of filtered data. Note there are other str methods that can be done on the column names, like startwith, endswith, but match provides the power of regex so most universal.