Я впервые изучаю разработку через тестирование. У меня нет опыта разработки программного обеспечения, но у меня есть некоторый опыт работы со скриптами.
Я следую учебному пособию по LinuxAcademy Python 3 для Sys Admin.
Я создал следующую структуру,
├── Makefile
├── Pipfile
├── Pipfile.lock
├── README.rst
├── setup.py
├── src
│ └── pgbackup
│ ├── cli.py
│ └── __init__.py
└── tests
└── test_cli.py
setup.py
файл,
from setuptools import setup, find_packages
with open('README.rst', 'r') as f:
readme = f.read()
setup(
name='pgbackup',
version='0.1.0',
description='Database backups locally or to AWS S3.',
long_description=readme,
author='Keith Thompson',
author_email='keith@linuxacademy.com',
packages=find_packages('src'),
package_dir={'': 'src'},
)
Makefile
файл,
.PHONY: install test
default: test
install:
pipenv install --dev --skip-lock
test:
PYTHONPATH=./src pytest
tests/test_cli.py
файл,
import pytest
from pgbackup import cli
def test_helloworld():
"""
JUST A HELLO WORLD TEST
"""
assert cli.hello() == "helloworld"
и src/pgbackup/cli.py
file,
def hello():
return "helloworld"
Я написал helloworld
как мой первый пример теста, который не является частью учебника. Теперь, когда я запускаю команду make
из корневого каталога проекта, мой тест проходит,
========================================== test session starts ===========================================platform linux -- Python 3.6.6, pytest-3.8.0, py-1.6.0, pluggy-0.7.1
rootdir: /root/code/pgbackup, inifile:
collected 1 item
tests/test_cli.py . [100%]
======================================== 1 passed in 0.04 seconds ========================================
Я знаю, что команда make
устанавливает PYTHONPATH
на ./src pytest
, но я не могу понять, как работает текущий тест? Я знаю, что это единственная установка пути поиска для импорта модулей Python.
Если я попытаюсь запустить команду pytest
из tests
dir, мой тест в случае неудачи
================================================= ERRORS =================================================___________________________________ ERROR collecting tests/test_cli.py ___________________________________ImportError while importing test module '/root/code/pgbackup/tests/test_cli.py'.
Hint: make sure your test modules/packages have valid Python names.
Traceback:
test_cli.py:2: in <module>
from pgbackup import cli
E ModuleNotFoundError: No module named 'pgbackup'
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!======================================== 1 error in 0.35 seconds =========================================
Если я запускаю тест из src
dir, он ничего не запускает,
====================================== no tests ran in 0.01 seconds ======================================
Может кто-нибудь объяснить, как при запуске make
выполняется тест, поскольку Makefile
просто устанавливает PYTHONPATH
переменную?