Как запустить модульные тесты с "pip install"? - PullRequest
0 голосов
/ 05 января 2019

На работе мы рассматриваем настройку локального хранилища pypi для внутреннего развертывания программного обеспечения. Развертывание с помощью «pip install» было бы удобно, но я обеспокоен тем, что модульные тесты должны выполняться после добавления нового пакета, чтобы обеспечить правильную установку. Я всегда предполагал, что это делает pip, но я не вижу ничего, связанного с тестированием, в документации по pip.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Вы можете передать параметр в setup.py через pip:

- установка-вариант Дополнительные аргументы, которые необходимо указать в команде установки setup.py (используйте, например, –install-option = »- install-scripts = / usr / local / bin»). Используйте несколько опций –install-option, чтобы передать несколько опций в setup.py install. Если вы используете опцию с путем к каталогу, обязательно используйте абсолютный путь.

pip install --install-option test

выдаст

setup.py test

затем Вам нужен файл setup.cfg в том же каталоге, что и файл setup.py:

# setup.cfg
[aliases]
test=pytest

пример setup.py:

# setup.py
"""Setuptools entry point."""
import codecs
import os

try:
    from setuptools import setup
except ImportError:
    from distutils.core import setup


CLASSIFIERS = [
    'Development Status :: 5 - Production/Stable',
    'Intended Audience :: Developers',
    'License :: OSI Approved :: MIT License',
    'Natural Language :: English',
    'Operating System :: OS Independent',
    'Programming Language :: Python',
    'Topic :: Software Development :: Libraries :: Python Modules'
]

dirname = os.path.dirname(__file__)

long_description = (
    codecs.open(os.path.join(dirname, 'README.rst'), encoding='utf-8').read() + '\n' +
    codecs.open(os.path.join(dirname, 'CHANGES.rst'), encoding='utf-8').read()
)

setup(
    name='your_package',
    version='0.0.1',
    description='some short description',
    long_description=long_description,
    long_description_content_type='text/x-rst',
    author='Your Name',
    author_email='your@email.com',
    url='https://github.com/your_account/your_package',
    packages=['your_package'],
    install_requires=['pytest',
                      'typing',
                      'your_package'],
    classifiers=CLASSIFIERS,
    setup_requires=['pytest-runner'],
    tests_require=['pytest'])
0 голосов
/ 05 января 2019

Есть способ:

import pkg_resources as pkr
packages = [(v.project_name, v.version) for v in pkr.working_set]
print (packages)
# [('zope.interface', '4.5.0'), ..., ('absl-py', '0.2.2')]

Это даст вам список кортежей, которые вы можете затем отфильтровать и найти, чтобы найти, соответствуют ли они тому, что вам требуется.
Простые примеры:

if packages[-1] == ('absl-py', '0.2.2'):
    print ('aye')
#aye

package_dict = dict(packages) 
#this converts the packages into a dictionary format
#However, you can simply open a file via
#with open('packages.txt', 'r') as f:
#process your packages into a dict object here, then use the below code    

for i,v in packages:
    if package_dict[i] == v:
        print ('yay') #will print yay multiple times
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...