Lorsque j'ai apporté des modifications au groupe de scripts hérité, j'avais besoin d'un test, mais si j'écrivais du code unittest pour un script avec uniquement des fonctions sans classe, j'ai rencontré un test de fonction utilisant une variable globale et je ne pouvais pas le déclarer globalement. Allons-y! J'ai eu l'erreur.
※ Python2.7
Courir
test_aaa.py
import aaa_module
class TestAAA(unittest.TestCase):
def test_aaa
aaa_module.aaa_func()
Erreur
...
NameError: global name 'logger' is not defined
Il n'y a pas d'enregistreur. Il y a.
aaa_module.py
if __name__ == '__main__':
logger = logging.getLogger('...')
Déclaré avec global. Il y a.
Je ne pouvais pas m'en empêcher, alors j'ai essayé ce qui suit du côté le plus simple.
Courir
test_aaa.py
import aaa_module
class TestAAA(unittest.TestCase):
def test_aaa
global logger
logger = logging.getLogger('...')
aaa_module.aaa_func()
Erreur
...
NameError: global name 'logger' is not defined
ne change pas. Pourquoi ...
Référence: En Python, il n'y a pas de variables globales, pour être exactes, dans le module. c'est ça?
module.global variable = valeur
Courir
test_aaa.py
import aaa_module
class TestAAA(unittest.TestCase):
def test_aaa
aaa_module.logger = logging.getLogger('...')
aaa_module.aaa_func()
Il y a encore de nombreuses inconnues en Python
Recommended Posts