Вы можете сделать
a.divide(b, MathContext.DECIMAL128)
Вы можете выбрать количество бит, которое вы хотите либо 32,64,128.
Проверьте эту ссылку:
Да, исходная папка не находится в пути Python, если вы cd
в каталоге тестов.
У вас есть 2 варианта:
import sys, os
myPath = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, myPath + '/../')
PYTHONPATH=../
. Я не уверен, почему py.test не добавляет текущий каталог в сам PYTHONPATH, но вот обходной путь (который должен выполняться из корня вашего репозитория):
python -m pytest tests/
It работает, потому что Python добавляет текущий каталог в PYTHONPATH для вас.
project/test/all-my-tests
и project/src/app.py
, и из-за этого изменения необходимо косвенно вызвать app.py
, используя файл __main__.py
в project/src
, чтобы можно было использовать вызов python -m src
. Насколько я могу судить, довольно грязный материал.
– Zelphir
26 September 2016 в 15:44
/home/user/dev/projectxyz/src ...
, будут действительно плохими и не будут работать на других машинах в большинстве случаев. Я думаю, что я имел в виду, что я должен всегда писать весь корень проекта в путь к модулю, даже если модуль находится в той же папке, что и файл. Я не знал, что это считается лучшей практикой, так что это полезная информация, спасибо. Я согласен с большинством pep8, хотя он все еще не идеален.
– Zelphir
6 November 2016 в 20:44
У меня была та же проблема. Я исправил это, добавив пустой файл __init__.py
в мой каталог tests
.
avoid “__init__.py” files in your test directories. This way your tests can run easily against an installed version of mypkg, independently from the installed package if it contains the tests or not.
SRC: pytest.org/latest/goodpractises.html
– K.-Michael Aye
30 May 2014 в 22:52
__init__.py
из моего каталога тестов разрешило его для меня.
– 101
13 October 2015 в 00:24
__init__.py
в подкаталоги test/
делает работу с абсолютным импортом для запуска определенных тестов в этой подкаталоге с установленными модулями. Благодарю.
– Bryce Guinta
9 September 2016 в 22:01
Вы можете работать с PYTHONPATH в корне проекта
PYTHONPATH=. py.test
Или использовать pip install как редактируемый импорт
pip install -e . # install package using setup.py in editable mode
test
не в структуре каталогов src
и вызовом из каталога, содержащего оба каталога test
и src
.
– Zelphir
13 March 2016 в 23:53
conftest
solution Наименее инвазивным решением является добавление пустого файла с именем conftest.py
в каталог repo/
:
$ touch repo/conftest.py
Вот и все. Не нужно писать пользовательский код для искажения sys.path
или не перетаскивать PYTHONPATH
или помещать __init__.py
в dirs, где он не принадлежит.
Каталог проекта затем:
repo
├── conftest.py
├── app.py
├── settings.py
├── models.py
└── tests
└── test_app.py
pytest
ищет модули conftest
в тестовой коллекции для сбора пользовательских перехватчиков и приспособлений, а для импорта пользовательских объектов из них добавляется pytest
родительский каталог conftest.py
на sys.path
.
Если у вас есть другая структура проекта, поместите conftest.py
в корневой каталог пакета ( один, который содержит пакеты, но не является самим пакетом, поэтому не содержит __init__.py
), например:
repo
├── conftest.py
├── spam
│ ├── __init__.py
│ ├── bacon.py
│ └── egg.py
├── eggs
│ ├── __init__.py
│ └── sausage.py
└── tests
├── test_bacon.py
└── test_egg.py
Конечно, conftest
- это не только некоторые файлы, которые помогают обнаружить исходный код; это то, где происходят все специфические для проекта усовершенствования pytest
и настройка вашего тестового набора. pytest
содержит много информации о модулях conftest
, разбросанных по всем их документам ; начните с conftest.py
: локальные плагины для каждого каталога
Кроме того, у SO есть отличный вопрос о модулях conftest
: В py.test, что такое использование файлов conftest.py?
Я начал получать странные ошибки ConftestImportFailure: ImportError («Нет модуля с именем ...», когда я случайно добавил файл __init__.py
в мой каталог src (который не должен был быть пакетом Python, просто контейнером всех источник).
Я создал это как ответ на ваш вопрос и свое собственное замешательство. Я надеюсь, что это помогает. Обратите внимание на PYTHONPATH как в командной строке py.test, так и в tox.ini.
https://github.com/jeffmacdonald/pytest_test
В частности: вы должны сообщить py.test и tox, где найти модули, которые вы включаете.
С помощью py.test вы можете сделать это:
PYTHONPATH=. py.test
И с помощью tox добавьте это в ваш tox.ini:
[testenv]
deps= -r{toxinidir}/requirements.txt
commands=py.test
setenv =
PYTHONPATH = {toxinidir}
Я получал эту ошибку из-за чего-то еще более простого (можно даже сказать тривиально). Я не установил модуль pytest
. Поэтому простой apt install python-pytest
исправил это для меня.
'pytest' был бы указан в setup.py как тестовая зависимость. Убедитесь, что вы также установили требования к тестированию.
Выполнить pytest
как модуль с: python -m pytest tests
cd
в каталог? Я запускаюpy.test
из моего корня. если я ошибаюсь, и вы имеете в виду, как pytest проходит через мои папки – MattoTodd 20 April 2012 в 22:46cd
, я бы тоже не ударил ее по mac? – MattoTodd 20 April 2012 в 22:46