With the default prepend import mode, pytest inserts each test file's rootdir-relative directory onto sys.path and imports the file as a top-level module named after its basename. Two files both called test_utils.py in different directories therefore map to the same module name, and pytest aborts with import file mismatch: imported module 'test_utils' has this __file__ attribute ... which is not the same as the test file we want to collect.
The message also suggests deleting __pycache__, which is a red herring when the real cause is duplicate basenames.
There are two durable fixes. Add an __init__.py to each test directory, which makes the files members of distinct packages so their full module names differ. Or set --import-mode=importlib in the pytest configuration, which imports each file under a unique name without touching sys.path and removes the whole class of problem; it is the mode the pytest documentation now recommends for new projects. Renaming files to be globally unique works too but does not scale.