def divide(x,y):
if y == 0:
raise ValueError("Can't divide by Zero")
return x / y
위 코드에 대한 유닛 테스트 코드는 아래와 같다.
import unittest
import calc
class TestCalc(unittest.TestCase):
def test_divide(self):
self.assertEqual(calc.divide(10 , 5), 2)
self.assertEqual(calc.divide(-1 , 1), -1)
self.assertEqual(calc.divide(-1 , -1), 1)
self.assertEqual(calc.divide(5 , 2), 2.5)
self.assertRaises(ValueError, calc.divide, 10, 0)
if __name__ == '__main__':
unittest.main()
context manager를 활용하여, ValueError raise하는 부분을 아래처럼 바꿀 수도 있다. 둘 다 같은 결과다.
import unittest
import calc
class TestCalc(unittest.TestCase):
def test_divide(self):
self.assertEqual(calc.divide(10 , 5), 2)
self.assertEqual(calc.divide(-1 , 1), -1)
self.assertEqual(calc.divide(-1 , -1), 1)
self.assertEqual(calc.divide(5 , 2), 2.5)
self.assertRaises(ValueError, calc.divide, 10, 0)
if __name__ == '__main__':
unittest.main()
우선 mock의 dir을 프린트해보자.
from unittest.mock import Mock
mock = Mock()
print(dir(mock))
['assert_any_call', 'assert_called', 'assert_called_once', 'assert_called_once_with', 'assert_called_with', 'assert_has_calls', 'assert_not_called', 'attach_mock', 'call_args', 'call_args_list', 'call_count', 'called', 'configure_mock', 'method_calls', 'mock_add_spec', 'mock_calls', 'reset_mock', 'return_value', 'side_effect']
-가상화를 하지 않고, 프로세스만 격리해서 빠르게 실행시키는 기술.
-운영체제 위에 운영체제를 새로 깔아 독립적 환경을 구성하는 것이 아니다.
-가상머신을 설치한 것과 거의 동일한 효과를 낸다.
-가상머신을 설치하는 것은 많은 용량을 필요로하고, 느리다는 단점이 있다.
-도커는 프로세스 격리만 할 뿐, os를 새로 깔지 않는다.
-용량을 많이 차지하지 않는다. (장점)
-이미지: 실행파일 (실행파일과 라이브러리의 조합)
-컨테이너: 파일을 실행시킨 상태 (이미지를 실행시킨 상태)
-컨테이너 안과 밖은 완전히 독립이다. 밖(로컬)에서 설치한 것과 컨테이너안에서 설치한 것은 서로 전혀 상관없다.
-run명령어는 실행 동시에 컨테이너 안으로 들어간다.
-start는 실행만.
-컨테이너 실행된 상태에서 exit 또는 Ctrl+D를 입력하면 컨테이너 정지됨.
-컨테이너 속에서 Ctrl+P,Ctrl+Q를 차례로 입력하면 컨테이너를 정지하지 않고 컨테이너에서 빠져나온다.
-docker stop container_name :실행종료
-docker rm container_name :컨테이너 삭제
-docker rmi img_name : 이미지 삭제
-docker pull nginx:latest : nginx가장 최신버전 다운
-docker ps : 실행중인 컨테이너 보여주는 커맨드
-docker ps -a : 실행 종료된 것 포함 모든 컨테이너를 보는 커맨드 및 옵션
-docker images : 생성된 혹은 다운로드 된 이미지를 보여주는 커맨드
-docker images -a : 모든 이미지를 보여주는 커맨드 및 옵션
docker를 시작하기 위해서,
1) 원하는 프로젝트 디렉토리로 이동
2) Dockerfile생성.
3) docker build -t kpl5672/zigbang:0.1.0 .
4) docker login
5) docker push kpl5672/zigbang:0.1.0
6) 우분투접속
7) 도커 설치
8) sudo docker pull kpl5672/zigbang:0.1.2
9) sudo docker run --name zigbang01 -d -p 8000:8000 kpl5672/zigbang:0.1.2
sudo docker run -d -p 8000:8000 kpl5672/zigbang:0.1.1 :서버열기
ps -ef | grep python :현재 돌아가는 서버 확인
sudo kill 29163 : 돌아가는 서버 죽이기(29163은 2번째 명령어에서 확인한 돌아가는 서버 이름?)
docker logs container_name :런서버 후 로그 보기(200, 404 등등)
https://www.notion.so/Docker-3a4c41688cd749659a572e8aa4fa3f76
https://noonnu.cc/