이미 알고있는 것처럼 단위 테스트는 코드가 예상대로 작동하고 설계되었는지 확인하기 위해 작성되었습니다. 예상되는 매개 변수를 함수에 전달하고 원하는 결과를 얻는 방법으로 테스트를 수행합니다. 반대로 예기치 않은 매개 변수를 전달하면 함수가이를 처리 할 수 있는지 테스트하려고합니다. 이 때문에 우리는 격리 된 테스트를 실행합니다. 각 테스트 방법은 하나만 응용 프로그램의 기능을 테스트해야합니다.
우리가 테스트해야 할 기능이 우리 응용 프로그램의 일부가 아닌 라이브러리를 사용할 때가 있습니다. 이로 인해 격리가 중단되고 코드의 논리를 테스트하기가 어려워 질 수 있습니다. 예를 들어, 우리의 메서드는 외부 라이브러리 (파일 시스템을 통과하고, 파일을 만들고, 다른 파일을 읽은 다음, 성공했는지 여부를 반환합니다)를 호출합니다. 이 극단적 인 예에서는이 외부 라이브러리의 출력을 제어 할 수 없습니다. 따라서 라이브러리가 반환 할 내용을 알 수 없으므로 코드를 테스트하기가 어렵습니다. 조롱을 입력하십시오. 우리는이 제 3 자 함수에 대한 호출을 모방하여 우리가 기대하는 바를 True와 False로 반환합니다. 이 방법을 사용하면 우리 코드가 외부 라이브러리의 오버 헤드없이 두 결과를 모두 처리 할 수 있는지 테스트 할 수 있습니다.
지금, 당신의 질문 :)의 나머지 부분에 대한
당신의 제 3 자 라이브러리를 사용하지 않는 vertex_set
경우, 다음이 적용됩니다.
어떻게 테스트하는지 설명하기 위해 vertex_set
의 작동 방식을 구성하고 있습니다.
이 vertex_set
이후
def vertex_set(graph):
"""Set's the vertex based on the graph passed.
Returns set of vertices.
Raises ValueError if graph is not a tuple of sets.
"""
이 (정점의 세트에 ValueError 인상)이 다른 일을 반환 할 수 undirected_graph.py, 우리의 테스트는 적절한 경우 우리는 이러한 결과를 얻을 수 있는지 확인해야합니다. 그렇지 않은 경우
import unittest
import undirected_graph
class UndirectedGraphTestCase(unittest.testCase):
def test_vertex_set(self):
# Test we can set a vertex
graph = ({1, 2}, {3, 4})
result = undirected_graph.vertex_set(graph)
self.assertEqual(result. {3, 4})
# Test we can handle a negative vertex
graph = ({1, 2}, {-3, -4})
result = undirected_graph.vertex_set(graph)
self.assertEqual(result, {-3, -4})
# Test we can handle when we give an invalid graph
graph =()
self.assertRaises(ValueError, undirected_graph.vertex_set, graph)
test_undirected_graph.py는 다행스럽게도 필자는 모의 객체가 필요할 때 분명히합니다. 더 궁금한 점이 있으면 알려주세요.