Rather than writing this as a test script that lists all the steps, the specification should focus on the business need at a higher level of abstraction. It shouldn't need to mention login, logout and possibly not even that a database is being used. The specification should be in plain language that everyone can understand and contain the minimum amount of detail to understand each example.
For example, your example might read "When a product code of 12345 is entered with a discount of 40%, it is ruled as invalid" (I have no idea what business domain you are working in).
The details around logging in and out should be handled by the fixture, using one of the
method hooks such as @BeforeExample and @AfterExample, or the "before" example as suggested by Tim.
If the data is complex, you should specify just the attributes of the data that are important for this example, and hide the other attributes in the fixture (for example using the Test Data Builder pattern).
Please reach out if you have questions about this.