We cannot know the real σ (Standard Deviation), because the standard deviation we get is from the data we get from users. Then we have to consider df (Degree of Freedom) to the test for σ-hat. T-test could make the result more accurate because it make df into consideration while z-test only exist when df tends to infinity or σ is ideally known.
Thus, the adoption of T-test is better then Z-test.