[Tutor] import issues

Mats Wichmann mats at wichmann.us
Tue Jan 9 18:01:17 EST 2024


On 1/9/24 15:29, dn via Tutor wrote:
> On 10/01/24 07:06, James Hartley wrote:
>>   I admit that I have not internalized how Python's import system 
>> works yet.
>> Given the following directory structure:
>>
>> +-project
>>      |
>>      +-src
>>      |   |
>>      |   +-__init__.py
>>      |   +-foo.py
>>      |
>>      +-tests
>>          |
>>          +-test_foo.py
>>
>> Currently, __init__.py is empty.  What needs to be placed in __init__.py
> 
> Nothing - it's not relevant to this discussion.
> 
> 
>> and test_foo.py in order for pytest to execute all tests in test_foo.py?
>> pytest is being executed while in the project directory.  With:
>>
>> from foo import Foo
>>
>> --or--
>>
>> from src.foo import Foo
>>
>> defined in test_foo.py, pytest reports "ModuleNotFoundError: No module
>> named 'src'".
>>
>> Any and all comments would be appreciated.  Any links to online sources
>> would also be appreciated. Thanks!
> 
> I use the latter, except:
> 
> - using PyCharm's auto-testing feature. However, 'translating' those 
> commands back to manual-typing, would be something like:
> 
> python -m pytest /path/project/tests/test_test_foo.py --no-header 
> --no-summary -q
> 
> - prepending "python -m"
> which configures the sys.path to include current/project directory (and 
> hence the "src.foo" relative-addressing) which likely accounts for the 
> issues outlined (above)
> 
> 
> Web.Refs:
> Specifics: 
> https://docs.pytest.org/en/7.4.x/explanation/pythonpath.html#pytest-vs-python-m-pytest
> and the rest of the online-manual (although I have to say, even after 
> years of use, I find it somewhat overwhelming)
> 
> Somewhat easier is the 'book of words', Brian Okken's: 
> https://www.amazon.com.au/Python-Testing-pytest-Effective-Scalable/dp/1680508601/ref=sr_1_1?keywords=brian+okken&qid=1704838720&sr=8-1
> (disclaimer: there are other book-sellers. No commission claimed)
> 
> Coursera on-line training: (amongst many 'Python' courses)
> Testing and Debugging Python 
> https://www.coursera.org/projects/testing-and-debugging-python
> - is a $paid project approach
> Possibly slightly off (your) topic is LearnQuest's 'TDD Specialisation': 
> https://www.coursera.org/learn/test-driven-development-overview
> (which I think can be "audited" for $free)
> NB have not completed either, and thus can't comment on quality, nor 
> degree of pytest-content.

Lotsa good stuff here, too:

https://www.obeythetestinggoat.com/




More information about the Tutor mailing list