Python/Django: 유닛 테스트 결과에 특정 문자열이 포함되어 있다고 단언하려면 어떻게 해야 합니까?
Python 유닛 테스트(실제로 Django)에서 올바른 것은 무엇입니까?assert테스트 결과에 내가 선택한 문자열이 포함되어 있는지 여부를 알려주는 문장
self.assertContainsTheString(result, {"car" : ["toyota","honda"]})
제가 확실히 하고 싶은 건result적어도 위의 두 번째 인수로 지정한json 객체(또는 문자열)가 포함되어 있습니다.
{"car" : ["toyota","honda"]}
문자열이 다른 문자열의 하위 문자열인지 아닌지를 확인하려면assertIn그리고.assertNotIn:
# Passes
self.assertIn('bcd', 'abcde')
# AssertionError: 'bcd' unexpectedly found in 'abcde'
self.assertNotIn('bcd', 'abcde')
이것들은 Python 2.7과 Python 3.1 이후 새로운 것입니다.
self.assertContains(result, "abcd")
json과 함께 작동하도록 수정할 수 있습니다.
사용하다self.assertContains을 위해서만HttpResponse물건들.기타 객체의 경우,self.assertIn.
간단한 어사션을 사용하여 문자열의 예상 부분에 대한 어사션을 다른 문자열에 쓸 수 있습니다.true + in python 키워드:
self.assertTrue("expected_part_of_string" in my_longer_string)
다음을 사용하여 JSON 개체를 빌드합니다.json.dumps().
그런 다음 다음을 사용하여 비교합니다.assertEqual(result, your_json_dict)
import json
expected_dict = {"car":["toyota", "honda"]}
expected_dict_json = json.dumps(expected_dict)
self.assertEqual(result, expected_dict_json)
Ed I에서 언급한 바와 같이assertIn아마 하나의 문자열을 다른 문자열에서 찾는 가장 간단한 답일 것입니다.단, 질문은 다음과 같습니다.
제가 확실히 하고 싶은 건
result적어도 위의 두 번째 인수로 지정한json 오브젝트(또는 문자열)가 포함되어 있습니다.{"car" : ["toyota","honda"]}
따라서 저는 여러 가지 주장을 사용하여 실패 시 유용한 메시지를 수신할 수 있습니다. 테스트 내용은 미래에 이해되고 유지되어야 하며, 어쩌면 처음부터 작성하지 않은 사람에 의해 유지되어야 할 수도 있습니다.그래서 우리가 안에 있다고 가정하면django.test.TestCase:
# Check that `car` is a key in `result`
self.assertIn('car', result)
# Compare the `car` to what's expected (assuming that order matters)
self.assertEqual(result['car'], ['toyota', 'honda'])
그러면 다음과 같은 유용한 메시지가 나타납니다.
# If 'car' isn't in the result:
AssertionError: 'car' not found in {'context': ..., 'etc':... }
# If 'car' entry doesn't match:
AssertionError: Lists differ: ['toyota', 'honda'] != ['honda', 'volvo']
First differing element 0:
toyota
honda
- ['toyota', 'honda']
+ ['honda', 'volvo']
언급URL : https://stackoverflow.com/questions/17536916/python-django-how-to-assert-that-unit-test-result-contains-a-certain-string
'programing' 카테고리의 다른 글
| 127.0.0.1:27017에 연결하지 못했습니다. 이유: errno:111 연결이 거부되었습니다. (0) | 2023.03.13 |
|---|---|
| TypeScript를 사용하는 React 구성 요소의 기본 속성 값 (0) | 2023.03.13 |
| jquery에서 appendTo를 사용하는 올바른 방법 (0) | 2023.03.13 |
| ReactJS chrome 확장이 설치되었지만 표시되지 않음 (0) | 2023.03.13 |
| MongoDB 원자 "findOrCreate" : findOne, 존재하지 않는 경우 삽입하지만 업데이트하지 않습니다. (0) | 2023.03.13 |