Ты же понимаешь, что вот это вот {src: require('@/assets/file/1.jpg')} происходит на этапе сборки и в код попадает уже что-то типа:{src: '/img/1.fd5gdf.jpg'} или там {src: 'data:image/jpeg;base64,...'}
(точнее в что-то типа, {src: a("18c2")}, которое возвращает уже соответственно '/img/1.fd5gdf.jpg' или 'data:image/jpeg;base64,...', т.е. результат обработки require('@/assets/file/1.jpg'))
Переменная testже становится действительна только во время исполнения.
Можно использовать частичные пути вида {src: require(`@/assets/file/${test}.jpg`)}, но никакой магии тут всё равно нет: в таких случаях webpack просто обрабатывает require для всех файлов по маске @/assets/file/*.jpg(что может сильно раздуть размер бандла если в папке много лишнего мусора) и заменяет require(`@/assets/file/${test}.jpg`) на соответствующую условную конструкцию с применением переменной test.
Делая же так: {src: require(test)} ты не даёшь webpack'у даже намёка, на то что бы там следовало грузить и откуда.