테스트 나는 실행하는 것을 시도하고있다 :파이썬 nosetests AssertionError를! 없음 = '흠 ...'아래
D:\dev\git_repos\platform-health\tests\unit\test_orphan_elb_finder>nosetests
.F
======================================================================
FAIL: test_hmm_method_returns_hmm (test_orphan_elb_finder.test_basic.BasicTestSuite)
----------------------------------------------------------------------
Traceback (most recent call last):
File "D:\dev\git_repos\platform-health\tests\unit\test_orphan_elb_finder\test_basic.py", line 18, in test_hmm_method_returns_hmm
self.assertEqual(orphan_elb_finder.hmm(), 'hmmm...')
AssertionError: None != 'hmmm...'
-------------------- >> begin captured stdout << ---------------------
hmmm...
--------------------- >> end captured stdout << ----------------------
----------------------------------------------------------------------
Ran 2 tests in 0.002s
FAILED (failures=1)
:
def test_hmm_method_returns_hmm(self):
#set_trace()
assert_equals(orphan_elb_finder.hmm(), 'hmmm...')
을 나는 다음과 같은 출력을 얻을 코드를 실행하면
orphan_elb_finder.hmm 결과가 None 인 것으로 보입니다. 나는 set_trace의 주석을 해제하고 수동으로 명령을 실행할 때 그것은 나에게 정확한 출력을 제공하기 때문에 이상한 어느 :
-> assert_equals(orphan_elb_finder.hmm(), 'hmmm...')
(Pdb) orphan_elb_finder.hmm()
hmmm...
을하지만 시도하고 디버거에서 같은 주장 실행하면 내가 가지고있는
(Pdb) assert_equals(orphan_elb_finder.hmm(), 'hmmm...')
hmmm...
*** AssertionError: None != 'hmmm...'
을 그것이 stdout 방식과 관련이 있다는 느낌이 들지만, 나는 더 많은 정보를 찾아내는 방법에 관해서 조금 잃어버린 /이 문제를 해결한다.
# -*- coding: utf-8 -*-
def get_hmm():
"""Get a thought."""
return 'hmmm...'
def hmm():
"""Contemplation..."""
print get_hmm()
어떤 도움이 크게 될
UPDATE 감사합니다 : : 아래
는 orphan_elb_finder 방법입니다그래서 내가 흠 대신 get_hmm 전화를 시도 Blckknght 응답을 다음(). 내가 호출 방법을 시도하지만 나는 시도
assert_equals(orphan_elb_finder.get_hmm(), 'hmmm...')
AttributeError: 'module' object has no attribute 'get_hmm'
그런 다음 아래의 오류가 발생하고 아래의 모듈은 어떤 이유로 get_hmm() 메소드를 공개하지 않는 것 같다 가능한 방법
(Pdb) dir(orphan_elb_finder)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'core', 'hmm']
을 확인 ?
UPDATE 2 :
무슨 일이 있었는지 알게되었습니다. 초기화 평 안에 내 orphan_elb_finder 패키지 내부 나는
from .core import hmm
이
from .core import get_hmm
로 변경했고 작동하는 것 같았다. 어쨌든 패키지 작성자가 get_hmm을 개인 메소드로 들여 썼다고 생각합니다. 확실하지 않은 경우 get_hmm이 None을 반환 할 때 어떻게 표시되는지 테스트 한 결과 어떻게 되었을까요?
감사합니다.이 말은 완벽한 의미입니다. 내 다음 과제는 뭔가를 반환하는 get_hmm()을 실행하려고 할 때입니다. 내 패키지가 해당 기능을 참조 할 수없는 것으로 보입니다. 업데이트 된 원래 질문보기 –
'hmm'의 인쇄물을 테스트하는 것이 가능합니다. 공개 된 API 만 사용할 수 있다면 더 적절할 수 있습니다. 그러나 실제로 그러한 테스트를 작성하는 방법을 알지 못하므로 제안하지 않았습니다. 아마도'sys.stdout'을 임시적으로 뭔가 ('StringIO' 객체와 같은) 것으로 대체 한 다음 그것에 무엇이 기록되었는지를 확인해야 할 것입니다. – Blckknght
감사합니다. 나는이 모든 것들에 대해 하나의 마지막 질문을 가지고있다. 내 orph_elb_finder 패키지의 __init__.py 파일에 "from .core import get_hmm"이 있습니다. 하지만 "import .core"로 변경하면 구문 오류가 발생합니다. 내가 묻는 것은 각각의 개별 메소드를 가져올 필요가 없도록 core.py에서 모든 것을 어떻게 가져올 수 있는가하는 것입니다. 아니면 이것을하는 나쁜 방법입니까? 나는 가이드를 여기에 따르고있다. -> http://docs.python-guide.org/en/latest/writing/structure/ –