django 단원 테스트 총결산

3038 단어
1. django 단원 테스트 프레임워크:
테스트 용례 작성:
  • TestCase 기본 클래스 인용: django.testpython 표준 라이브러리unittest를 계승했기 때문에 자신의 테스트 용례 클래스 계승django.test.TestCase하면 된다:
  • from django.test import TestCase
    class MyClassTestCase(TestCase):
        def SetUp(self):
            #     
            pass
        def test_my_func(self):
            #   my_func  
            pass
    

    예를 들어 일반적인 테스트 용례 클래스는 하나의 업무 클래스에 대응하고 이 테스트 클래스에서 이 업무 클래스의 각 방법에 대한 단원 테스트를 완성한다.
  • 용례 집행:
  • ./manage.py test
    

    기본 예시 실행 문장: 현재 디렉터리에 있는test로 시작하는py 파일을 발견하고 실행합니다.또한 사용자는 용례가 있는 디렉터리와 용례 파일 이름이 일치하는 규칙을 스스로 지정할 수 있습니다.
  • 클라이언트 사용: 주로 URL 요청을 모방하고 요청 결과를 호출하고 되돌려줍니다.
  •         response = self.client.get('/vpc/list')
            self.assertEquals(response.status_code, 302)
    
  • RequestFactory 사용: 주로 Request 대상을 구성하는 데 사용되며 클라이언트와 비교하면 url 인터페이스의 호출이 발생하지 않습니다.
  •         request = self.request_factory.post('vpc/list', data={'start': 0, 'length': 10})
            vpc_manage = VpcManage(request)
    
  • 단언(Assertions): 용례 집행 결과를 판단하는 주요 수단으로 테스트 함수 반환 결과와 예상 결과의 일치성을 단언한다.
  •         self.assertEquals(res['recordsTotal'], 0)
    

    2. 모크의 사용:
    단원 테스트는 주로 함수급 기능을 테스트하기 때문에 mock을 통해 측정 함수에서 호출된 방법에 대해 말뚝을 박아 테스트에 편리한 값을 되돌려야 한다.
            vpc_manage.get_user_info = mock.Mock(
                return_value=mock.Mock(**self.user_info_attrs))
            res = vpc_manage.vpc_list()
            res = json.loads(res)
    

    3. 용례 집행:
    1. 용례만 실행:
    python manage.py test -v 2
    

    2. 덮어쓰기:
  • coverage 패키지 설치:
  • pip install coverage
    
  • 집행용례
  • coverage run --source '.' manage.py test -v 2
    
  • 조회 범위:
  • macbook:portal zhaoxueyong$ coverage report
    

    Name Stmts Miss Cover authclient/init.py 2 0 100% authclient/authexception.py 12 4 67% authclient/authuser.py 81 62 23% authclient/decorators.py 81 48 41% authclient/settings.py 26 4 85% authclient/test.py 9 0 100% authclient/urls.py 4 0 100% authclient/views.py 28 21 25% libs/init.py 0 0 100% libs/ac_config.py 6 0 100% libs/agile_controller.py 464 333 28% libs/constants.py 17 0 100% libs/json_helper.py 19 5 74% libs/logger.py 39 22 44% libs/mongo_tool.py 43 21 51% manage.py 13 6 54% project/init.py 0 0 100% project/settings.py 24 0 100% project/urls.py 3 0 100% project/wsgi.py 4 4 0% vpc/init.py 0 0 100% vpc/admin.py 4 0 100% vpc/apps.py 4 4 0% vpc/forms.py 173 90 48% vpc/manage.py 1079 812 25% vpc/migrations/0001_initial.py 8 0 100% vpc/migrations/init.py 0 0 100% vpc/models.py 206 11 95% vpc/tasks.py 5 5 0% vpc/tests/init.py 0 0 100% vpc/tests/test_router_manage.py 13 0 100% vpc/tests/test_views.py 24 6 75% vpc/tests/test_vpc_manage.py 80 0 100% vpc/urls.py 3 0 100% vpc/views.py 168 118 30% TOTAL 2642 1576 40%
    참조 문서:
  • 파이썬 모크의 입문
  • Requests: HTTP 서비스 인간
  • 좋은 웹페이지 즐겨찾기