Any ideas how to make unit test read the theme functions.php?

The only thing switch_theme() does is to set an option in the database that says which theme is active. So the theme files will not be included by using that.

You need to include the files yourself, either inside the test function, in thesetUp()function or thesetUpBeforeClass()function of your test class. Or at the top of the file outside the class.

If you want wordpress to load it you could also set the active theme in $GLOBALS['wp_tests_options'] in your bootstrap.php file, but that would force activate that theme for the whole unit test suite and that may or may not be what you desire.