I have recently being upskilling/ refreshing some of my automation skills. This has taken a couple of different forms but one of the things I've just done was complete the "Behaviour Driven Python with pytest-bdd" course on Test Automation University.
Here's my 5 key Takeaways
1. Andy Knight is great.
Andy Knight is an engaging instructor and it's a delight to spend time listening to him talk. (Incidentally I also recently did his Introduction to pytest and Selenium WebDriver with Python courses. They are both incredibly engaging ways to spend your time.)
2. BDD with Python might be more fun than with Ruby.
My previous experiences of using "BDD tooling" was with Ruby and quite a long time ago but it's very similar how it fits together from what I can remember. Though python is in my opinion a little more fun than Ruby. (They're both more fun than karate though, which I have... thoughts on.)
3. BDD without collaboration is extra cost for little reason.
I continue to feel that the practice of writing feature files without having a three Amigo session really highlights that without the collaboration, "BDD tooling" is just extra clutter around what could be much simply structured tests.
4. Multiline Step handling is "surprising" and has changed over time.
There seems to have been a change in how multiline steps handle input from when the course was written, which did feel like there's now a new a bit of "Magic" happening that can feel counterintuitive if following the course.
This leads me to my last point.
5. The "Magic" involved can sometimes make life easier and sometimes make it a lot harder.
Most "bdd tooling" includes a bit of "hidden bdd magic" in order to bind steps to definitions and clearly pytest-bdd is not exempt from this. Some of the "clever" stuff that "just works" is tricky to untangle when it isn't working.