In Rust, the tests usually sit right next to the source code, even in the same file. That’s partly because the compiler can just strip the tests from the final binary, and I assume partly just conventional. In Python, you usually want to keep the tests out of the final sdist/wheel, so the setup you described is probably the most common in bigger projects.
Oh my gosh… This project and its readme are amazing. I gotta try this at work tomorrow, I hope my co-workers can bear with me.
Edit: I just found the release notes… I love it