boB Stepp wrote:

> Linux Mint 19 Cinnamon, Python 3.6.6
> 
> I would have sworn that I had read, either on this list or the main
> Python list, that in the most recent versions of Python 3 that
> "__init__.py" files were no longer needed in nested project file
> structures.  

If you omit the __init__.py you get a "namespace package".

Namespace packages can combine multiple directories into one package, but 
will be shaded by "normal" packages.

> But when I attempted to run tests for the first time on
> my new Solitaire Scorekeeper project (Finally getting around to
> this!), I got:
> 
> bob@Dream-Machine1:~/Projects/solitaire_scorekeeper$ python3 -m unittest
> 
> ----------------------------------------------------------------------
> Ran 0 tests in 0.000s
> 
> OK
> 
> So no tests were run.  So it immediately occurred to me to add an
> empty "__init__.py" file to my "tests" subfolder and got what I was
> currently expecting:
> 
> bob@Dream-Machine1:~/Projects/solitaire_scorekeeper$ python3 -m unittest
> E
> ======================================================================
> ERROR: test_get_gamenames_bad_path
> (tests.tests_main.TestGameNamesMapperMethods) Test that when the method,
> get_gamenames(), is passed a path to a
> ----------------------------------------------------------------------
> Traceback (most recent call last):
>   File "/home/bob/Projects/solitaire_scorekeeper/tests/tests_main.py",
> line 20, in test_get_gamenames_bad_path
>     self.assertEqual(gamenames.gamenames(), {})
> NameError: name 'self' is not defined
> 
> ----------------------------------------------------------------------
> Ran 1 test in 0.000s
> 
> FAILED (errors=1)
> 
> I was expecting this error and will shortly correct it.  So my
> question remains, when are "__init__.py" files needed and when are
> they not?

I am struggling with the differences between the two types of packages 
myself, so my first guess was that you accidentally found out that test
discovery doesn't work for namespace packages. However

https://docs.python.org/dev/library/unittest.html#test-discovery

expicitly states

"""
Changed in version 3.4: Test discovery supports namespace packages.
"""

Perhaps you should file a bug report.

> In case it helps, my current project structure is:
> 
> ~/Projects
>     data/
>     docs/
>     tests/
>     .git/
>     main.py
>     .gitignore
> 
> TIA!
> 

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to