Ho una suite di test che viene eseguita come parte di un framework di compilazione più grande, scritto in Python. Alcuni test richiedono parametri, che voglio passare usando variabili d'ambiente.framework nosetests: come passare le variabili di ambiente ai miei test?
A quanto pare il runner nosetests ha un parametro env
, che fa quello che voglio, according to the documentation. Sembra, tuttavia, che non funziona come dovrebbe?
Ecco uno script di test minima che esemplifica il problema:
#!/usr/bin/env python
# pip install nose
import os, nose, unittest
class Test(unittest.TestCase):
def test_env(self):
self.assertEquals(os.environ.get('HELLO'), 'WORLD')
if __name__ == '__main__':
nose.run(env={'HELLO': 'WORLD'})
L'asserzione fallisce, perché il parametro env
non viene passata alla prova. Qualcuno sa perché?
NB: ho lavorato tutto il problema lanciando lo strumento console nosetests
:
#!/usr/bin/env python
import sys, os, nose, unittest, subprocess
class Test(unittest.TestCase):
def test_env(self):
self.assertEquals(os.environ.get('HELLO'), 'WORLD')
if __name__ == '__main__':
subprocess.Popen(['nosetests', sys.argv[0]],
env={'HELLO': 'WORLD'}).wait()
Tuttavia, questo si sente come un ripiego, e mi sarebbe ancora interessato a imparare a usare correttamente nose.run()
.
Dovreste ancora per ripristinare il vecchio 'os.environ 'Se stai facendo qualcos'altro dopo l'esecuzione dei test, ma questo è qualcosa che può essere preso in considerazione in un metodo, immagino. Lo accetterò come risposta. – Mihai