Looks like the deprecation notes for MediaInMemoryUpload say that you can use MediaIoBaseUpload with a stream or a stringIO. That said, your reasons for choosing to do it this way sound reasonable, and given that this is an experimental feature, it makes sense to leave it as-is for now.

Regarding the credentials for testing, we're currently looking into improving the un-billed access, where you have a project but you have not turned on billing. We're in the process of bumping up the available free query quota to 1TB/month, and are evaluating options for allowing free loads. It seems like this would then allow you to have checked-in testing credentials that were guaranteed to not cost you money.