This week we welcome Bruno Oliveira (@nicoddemus) as our PyDev of the Week! Bruno is a core developer of the pytest package, a 3rd party Python package created for writing unit tests. You can check out some of his work over on Github. Bruno also has a small blog with some articles on Python. Let’s take some time to get to know Bruno!
Can you tell us a little about yourself (hobbies, education, etc):
About my education, I’m a Computer Science bachelor through the Federal University of Santa Catarina, in Florianopolis (southern Brazil). When I was young, I loved drawing and planned to become an architect after my godfather, but discovered programming (with Delphi!) when I was 14 and never wanted to be anything else.
As for hobbies, I mostly enjoy computer games being a huge Dark Souls fan.
Why did you start using Python?
Over a decade ago all of our development at ESSS was done in C++, and we always felt that a little too strict and slow to get things done. Once we got our hands in Python we immediately fell in love and started using it for all our new projects at the time. We just love its expressivity and the productivity it brings us.
What other programming languages do you know and which is your favorite?
Python is my favorite language hands-down, and the one I use daily both at work and at home working on personal or open source projects. I also am well versed in C++ although I don’t use it daily anymore, plus I know a few other languages but just the bare minimum you get after doing a tutorial to get a feeling for the language, like Go, Ruby and D.
What projects are you working on now?
I dedicate most of my time working on pytest of course, but I’m also a fairly regular contributor to pytest-xdist and conda-forge and to a lesser extent pluggy and tox (mostly by lack of time, not of interest).
I also authored a good number of pytest plugins, like pytest-qt, pytest-cpp and pytest-mock to cite a few.
Which Python libraries are your favorite (core or 3rd party)?
From the top of my head I have to mention attrs and boltons. I also want to mention conda and cookie-cutter, although they are more tools than libraries.
How did you get started with the pytest project?
Very early at work we realized that testing is central to a healthy and sustainable development so very early on I was keen on testing, CI and DevOps. We developed in house a unittest-based framework over the years to test everything from numerical simulators to GUI interfaces with 3D visualization. The framework we developed was adequate, but started showing its age: using inheritance-based functionality, it was hard to keep track or write proper setup/teardown code depending of your particular need.
When I discovered pytest and I immediately loved the framework: easy to use from the onset, both by its simplicity to writing tests using plain asserts and by allowing for more complex testing using more advanced features such as fixtures, parametrization and extensive number of plugins. I even wrote an internal company blog talking about it, titled “pytest: the best thing since sliced bread”.
At that point, I joined the mailing list and started watching the repository. I got involved slowly, initially by setting up the plugincompat page (http://plugincompat.herokuapp.com/) and helping with the migration of the project to GitHub, then eventually fixing bugs and help triaging issues until eventually I was asked by Holger (the project founder) to join back in 2014.
It has been great!
Do you have any advice for new developers that would like to join an open source project?
If you want to get more involved, I recommend triaging issues and also looking for easy issues to tackle (usually projects have a “new-contributor-friendly” label) to get your feet wet around the code. People should not underestimate how every contribution helps, even if it is really minor like rewriting a section of the docs for clarity or writing a test case for a known bug.
If you start participating in the community and demonstrate you are respectful to others and show good work, you will definitely be asked to join as a maintainer.
Is there anything else you’d like to say?
I would like to mention that people should really give pytest a try, it can run unittest-based test suites out of the box with zero changes almost 100% of the time so it is very easy to get started. I’m surprised by how many people don’t know that and think they have to port all their tests first.
Also, I would like to give a shout-out to all members of the great pytest community!
Thanks for doing the interview!