2016-10-20 2 views
0

Я пытаюсь выполнить следующий скрипт:Как использовать метод установки() в Пайтоне UnitTest

import unittest 

class RandomDataGeneratorTest(unittest.TestCase): 
    def setUp(self): 
     import numpy 

    def test_numpy_is_imported(self): 
     pi = numpy.pi 

if __name__ == '__main__': 
    unittest.main() 

Однако, я получаю следующее сообщение об ошибке/неуспехе:

E 
====================================================================== 
ERROR: test_numpy_is_imported (__main__.RandomDataGeneratorTest) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/home/kurt/dev/clones/ipercron-compose/controller/random_data_tester.py", line 9, in test_numpy_is_imported 
    pi = numpy.pi 
NameError: global name 'numpy' is not defined 

---------------------------------------------------------------------- 
Ran 1 test in 0.100s 

FAILED (errors=1) 

Как я понимаю из https://docs.python.org/2/library/unittest.html#unittest.TestCase.setUp, функция setUp() может быть запущена до любой функции test, поэтому я не понимаю, почему возникает эта ошибка?

+1

Почему вы проверяете, импортируется ли «numpy» для начала? – msvalkon

+0

Если каждый 'test' будет использовать' numpy', почему бы не объявить импортную numpy до запуска класса? –

ответ

2

Вы импортируете внутри функцию, поэтому импортированное имя существует только там.

Попробуйте установить что-нибудь, например. self.test = "somestring", и утвердите, что он установлен в методе тестирования.