Code is always unambiguous - using it to describe a small piece of code behavior (a unit, TDD) is the natural way. However, for "bigger" behaviors, human language can be more beneficial (BDD).
But only for these "bigger" behaviors": Describe every single piece of work necessary to execute in isolation a small functionality is bloated - unit test runners already come with some features for creating some level of abstraction, such as
@Before/
@After hooks