python - dovrebbe pytest et al. vai a tests_require[] o extras_require{testing[]}?



setuptools setup.py (1)

Secondo i documenti

tests_require sono pacchetti aggiuntivi che si ottengono quando si utilizza il comando test di tests_require . Non sono installati sul sistema.

extras_require sono pacchetti aggiuntivi facoltativi raggruppati in base al nome della funzione. L'elenco di pacchetti è installato per utilizzare quella funzionalità e ci sono vari modi per installarli. Vedere Pip gestisce extras_requires da setuptools / distribuire fonti basate?

La mia interpretazione

tests_require dovrebbe essere pacchetti che vengono utilizzati nei test come numpy e non pacchetti che vengono utilizzati per condurre test come pytest o nose . test_require avrebbe bisogno di essere spostato o copiato in una funzione "testing" in extras_require quando si esegue il test al di fuori di setuptools .

Utilizzare extras_require per creare un pacchetto di test come pytest opzionale. Usa setup_requires per richiederlo.

pytest e nose possono essere integrati con setuptools per sfruttare la praticità di test_require , tuttavia, ci possono essere degli inconvenienti. nose avverte che i plug-in potrebbero non essere disponibili quando vengono eseguiti attraverso setuptools .

Vedi Integrazione con setuptools / python setup.py test / pytest-runner e nosetests setuptools .

Per esempio

Test con l'integrazione di setuptools:

setup.py

[...]
'version': '0.0.1',
'install_requires': [],
'tests_require': ['numpy'],
'cmdclass': {'test': PyTest},
'extras_require': {
    'testing': ['pytest'],
},
[...]

sh

(env) > python setup.py develop
(env) > easy_install pytest
(env) > python setup.py test -a "--pdb"

Oppure, test senza integrazione di setuptools:

setup.py

[...]
'version': '0.0.1',
'install_requires': [],
'extras_require': {
    'testing': ['pytest', 'numpy'],
},
[...]

sh

(env) > pip install -e .[testing]
(env) > pytest.py --pdb

Sto scrivendo un programma python che usa py.test per testare e ora un test dipende anche da numpy. Dove nel mio setup.py dovrei aggiungere quelle dipendenze?

Attualmente la parte rilevante del mio setup.py è simile a questa:

[...]
'version': '0.0.1',
'install_requires': [],
'tests_require': ['pytest'],
'cmdclass': {'test': PyTest},
'extras_require': {
    'testing': ['pytest'],
},
[...]

Avere pytest due volte mi sembra già un po 'strano e non sono sicuro di dove aggiungere numpy.





setup.py