### Body

Similarly to SFTP (fixed in https://github.com/apache/airflow/pull/29068) the logic from __init__ should be moved to execute.

The #29068 provides a blueprint for that.

### Committer

- [X] I acknowledge that I am a maintainer/committer of the Apache Airflow project.
with pytest.raises(ValueError):
            FTPFileTransmitOperator(
                task_id="test_ftp_unequal_paths",
                ftp_conn_id=DEFAULT_CONN_ID,
                local_filepath="/tmp/test",
                remote_filepath=["/tmp/test1", "/tmp/test2"],
            )
        with pytest.raises(ValueError):
            FTPFileTransmitOperator(
                task_id="test_ftp_unequal_paths",
                ftp_conn_id=DEFAULT_CONN_ID,
                local_filepath=["/tmp/test1", "/tmp/test2"],
                remote_filepath="/tmp/test1",
            )
class TestFTPSFileTransmitOperator:
    def setup_method(self):
        self.test_local_dir = "ftpstmp"
        self.test_remote_dir = "/ftpshome"
        self.test_remote_dir_int = "/ftpshome/interdir"
        self.test_local_filename = "test_local_file"
        self.test_remote_filename = "test_remote_file"
        self.test_local_filepath = f"{self.test_local_dir}/{self.test_local_filename}"
        self.test_remote_filepath = f"{self.test_remote_dir}/{self.test_remote_filename}"
        self.test_local_filepath_int_dir = f"{self.test_local_dir}/{self.test_local_filename}"
        self.test_remote_filepath_int_dir = f"{self.test_remote_dir_int}/{self.test_remote_filename}"
    @mock.patch("airflow.providers.ftp.operators.ftp.FTPSHook.store_file")
    @mock.patch("airflow.providers.ftp.operators.ftp.FTPSHook.create_directory")
    def test_file_transfer_put(self, mock_create_dir, mock_put):