Потому что любая функция, содержащая yield, возвращает генератор, даже если этот yield недостижим при вызове функции. То есть, при вызове функции test() возвращается объект-генератор, сама функция не отрабатывает, а уже при вызове генератора срабатывает функция, возвращая значение, если сработает yield.