주어진 디렉토리에서 ".test"파일을 읽는 테스트 러너에서 작업 중입니다. ".test가"의테스트 실패시 "for 루프"를 종료하지 않고 "assert"를 사용하여 파이썬의 모든 테스트 파일을 하나의 함수에서 실행
구조 :
---TEMPLATE---
template content
---CONTEXT---
context to render on template
---RESULT---
expected result of the template.
는 'n'을 더 있습니다. 내 테스트 디렉토리에 테스트 파일의. 나는 테스트 번호를 저장합니다. .test 파일을 키로 사용하고 .test 파일의 이름을 사전 "tests"에 저장합니다.
그 후 사전 "테스트"를 반복하고 .test 파일의 내용을 읽고이를 변수에 저장하십시오.
---TEMPLATE--- part in "template_string",
---CONTEXT--- part in "context_string", and
---RESULT--- part in "expected_result"
후 사용 jinja2.Environment 클래스를 CONTEXT_STRING와 template_string 렌더링 및 "결과"varibale에 저장합니다.
"결과"를 "예상 _ 결과"와 비교하십시오.
현재 테스트 러너 코드 :
class TestTempates(TestCase):
def test_method(self):
tests = { dictionary of .test file }
results = {} #to store status of test case at there index (pass or error).
env = jinja2.Environment()
passed = 0
error = 0
for index, fname in tests.items():
file_path = dirpath + os.sep + fname
with open(file_path) as f:
# logic to read file content
template_string = #content of ---TEMPLATE--- part from file
context_string = #content of ---CONTEXT--- part from file
expected_result = #content of ---RESULT--- part from file
template = env.from_string(template_string)
context = json.loads(context_string)
result = template.render(context)
if result == expected_result:
results[index] = "Pass"
passed += 1
else:
sep = "-----------------------------"
error = "Error: results mismatch:\n%s\n%s\n%s\n%s" % \
(sep, result, sep, expected_result)
results[index] = error
errors += 1
비교 "결과"와 조건을 잘 작동 "다른이 경우"에와 "expected_result". 하지만 모든 테스트 파일이 실행될 때까지 "expected_result"와 일치하지 않는 테스트 파일이있을 때 "for 루프"를 종료하지 않고 "assert"또는 "assertEquals"를 사용하려고합니다. 그래서 Travis CI에서 테스트 러너를 사용할 수 있으므로 테스트 케이스가 실패 할 때 Travis 빌드가 실패합니다.
현재 상황에서는 트래비스 CI 빌드가 테스트 케이스 실패시 실패하지 않습니다.