이것은 초보자 용 질문 일 뿐이지 만 실제로 제 머리카락을 내 보냅니다.unittest에서 클래스를 가져올 수 없습니다.
내가 아주 간단한 파이썬 스크립트 "foo는"이 :
$ python foo.py
foo
내가 기능 유닛 테스트에서 "do_something"를 검사 할이 코드를 가지고 :
#!/usr/bin/env python
class Foo():
def __init__(self):
self.do_something()
def do_something(self):
print "foo"
def main():
Foo()
if __name__ == '__main__':
main()
스크립트가 잘 작동 : 내가 테스트를 실행하면
#!/usr/bin/env python
import unittest
import foo
from foo import *
class TestFoo(unittest.TestCase):
def test_foo(self):
Foo()
def main():
unittest.main()
if __name__ == "__main__":
main()
그러나, 내가 얻을 :
$ python pyunit/foo.py
E
======================================================================
ERROR: test_foo (__main__.TestFoo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "pyunit/foo.py", line 9, in test_foo
Foo()
NameError: global name 'Foo' is not defined
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
내 프로젝트 구조 :
$ tree
.
├── foo.py
└── pyunit
└── foo.py
내가 inspect
, dir()
, 파이썬 디버거 등으로 주위를 연주했지만 내가 갈 곳없는거야.
는 import foo
와 from foo import *
모두 잘 실행하고 나는 그 파일에서 가져온 기능 main
를 볼 수 있지만, 클래스 자체 Foo
수입하지 않는 것.
내 목표는 궁극적으로 클래스 Foo
의 함수에 대한 단위 테스트를 작성하는 것입니다.
내가 뭘 잘못하고 있니?
하나의 import 문을 사용해 보았습니까? 'from foo import *'이면, 위의'import foo' 문은 필요 없습니다. – Vinny
가져 오는'foo' 모듈이 원본 파일이 아닌 테스트 파일일까요? 'pyunit/foo.py'의 이름을'pyunit/test_foo.py'로 변경하고 어떻게되는지보십시오. –
아니요, 나는이 제안을 모두 시도했지만 동일한 결과가 있습니다. –