0부터 시작하는 Django 공부 - TDD 2

Jaehong Lee·2022년 6월 28일
0
post-thumbnail

1. TEST 전 게시물 조회 page 구현

  • view에 게시물 조회 함수를 만든다
  • Html에 게시물 조회 page를 만든다. 이때 로그인 USER와 작성자가 일치하면 수정/삭제 버튼을 보여준다
  • 잘 작동한다

2. 게시물 조회 수정/삭제 버튼 TEST

  • 두 명의 user를 만들고, user1의 게시물을 생성한다
  • assertInHTML(' ' , response.content.decode()) : 사용한 template 코드에 ' '에 들어간 특정 코드가 있는지 확인
  • 로그인 했을때 버튼이 보이는 경우, 안 했을때 버튼이 존재하지 않는 경우, 다른 유저가 로그인 했을 경우, 총 3가지 경우로 시험한다
  • request.content.decode()에 html 코드가 들어간다
  • response는 get이나 post를 했을때 받아오는 응답이다

3. Selenium

  • Selenium : Django의 경량 web 브라우저
  • 먼저, 크롬 웹 드라이버를 다운 받자 (https://chromedriver.chromium.org/downloads)
  • 자신의 크롬 버전을 확인하자
  • Window 환경이니 Win32 버전을 다운받는다
  • 새 python project를 만들고, selenium을 install하자
  • webdriver를 import 하고, 크롬 웹 드라이버를 사용하는 webdriver 객체를 만들고, 크롬 웹 드라이버를 저장한 경로를 넣어준다
  • webdriver.사용할 웹 클라이언트(' 웹 드라이버가 저장된 경로' )로 작성한다
  • driver.get('사이트 주소')를 통해 사이트에 접속한다
  • driver 종료는 quit를 통해 실행한다

4. Tag를 찾아보자

  • 네이버 로그인의 Input tag를 찾아보겠다

    • ID 속성으로 찾기 : ID는 유일성을 가지며, 절대 중복되면 안된다. 허나, ID 속성은 없을 수도 있다
    • Class 속성으로 찾기 : class로도 찾을 수 있지만, 한 tag가 여러개의 class를 가질 수도 있고, 다른 tag도 이 class를 가지고 있기에 특정 하나의 tag보다는 묶음을 찾을때 편리하다
    • Tag 이름으로 찾기
    • Xpath로 찾기 : f12 html 코드에서, 코드 우클릭/copy/copy full Xpath를 통해 찾을 수 있다. 이는 /html/body/div[1]/div[2]/div/div[1]/form/ul/li/div/div[1]/div[1]/input와 같이 경로 형태로 나온다. 단, 이 방법은 기업에서 선호하지 않는다
  • 4.1 ID 속성으로 찾기

    • send_keys('내용') : 내용을 키보드 입력해준다
    • find_element(By.찾는 tag, '찾을 tag의 이름') : 찾는 tag와 찾는 tag 이름을 통해 해당 속성을 찾는다. 여러개 찾을때는 elements

  • click을 통해 버튼 클릭이 된다
  • 실행시 바로 로그인 버튼이 눌려서 넘어가지만, 확인코드를 입력해야한다. 네이버에서는 아마 js를 이용해 검사하는거 같다
  • 4.2 XPATH로 찾기

  • XPATH로 네이버의 웹툰을 클릭한다
  • 잘 이동된다
  • 가져온 TAG의 TEXT를 출력해보자
  • 잘 출력된다

5. 기능테스트

  • 기능에 대한 과정들을 전체 테스트하는 것
profile
멋진 엔지니어가 될 때까지

0개의 댓글

관련 채용 정보