{"id":208,"date":"2020-12-19T06:47:06","date_gmt":"2020-12-19T06:47:06","guid":{"rendered":"http:\/\/www.kowanas.com\/coding\/?p=208"},"modified":"2020-12-19T07:06:19","modified_gmt":"2020-12-19T07:06:19","slug":"unit-test","status":"publish","type":"post","link":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/","title":{"rendered":"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest )"},"content":{"rendered":"\n<p>\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\uc800\uc758 Python \ud658\uacbd\uc740 3.4\uc774\uc0c1\uc774\uba70 \uc800\ub294 \ud604\uc7ac 3.6.9\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. 3.4\uc774\ud558\uc5d0\uc11c\ub294 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p><\/blockquote>\n\n\n\n<p>\ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\uc624\ub298\uc758 \ud575\uc2ec\uc740 if __name__ == &#8216;__main__&#8217;: \ub300\uc2e0 pytest\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 \uc124\uba85\ud569\ub2c8\ub2e4.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">pytest \uc124\uce58<\/h2>\n\n\n\n<p><strong>pip3 install pytest<\/strong><\/p>\n\n\n\n<p><strong>pip install pytest<\/strong><\/p>\n\n\n\n<p>\ud658\uacbd\uc5d0 \ub9de\uac8c \uc0ac\uc6a9\ud558\uc2dc\uba74 \ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">test_ \ub610\ub294 _test \uadf8\ub9ac\uace0 \uc2e4\ud589<\/h2>\n\n\n\n<p>pytest\uc5d0 \uc758\ud574\uc11c \uc2e4\ud589\ub420 \ud30c\uc77c\uacfc \ud568\uc218\ub294 test_ \ub610\ub294 _test\ub97c \uc55e\uc774\ub098 \ub4a4\uc5d0 \ubd99\uc5ec\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub798\uc11c test_\uac00 \ubd99\uc740 \ud30c\uc77c\uc758 \ud3f4\ub354\uc5d0\uc11c pytest \ub97c \uc2e4\ud589\ud558\uba74 pytest\ub294 test_\uac00 \ubd99\uc740 \ud30c\uc77c\uacfc \ud30c\uc77c\ub0b4\uc5d0 test_\uac00 \ubd99\uc740 \ud568\uc218\ub4e4\uc744 \uc2e4\ud589\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c\uc740 Chapter 1\uc5d0\uc11c \uc124\uba85\ud55c <a href=\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/\">Thread Safe \uc2f1\uae00\ud1a4 \ud328\ud134 \ucf54\ub4dc<\/a>\ub97c pytest\ub85c \uc2e4\ud589\ud55c \uacb0\uacfc\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png\" alt=\"Unit Test \uc2e4\ud589 \uacb0\uacfc\"\/><\/figure>\n\n\n\n<p class=\"has-normal-font-size\">$ pytest \ub9cc \uc2e4\ud589\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">pytest code<\/h2>\n\n\n\n<p> Chapter 1\uc5d0\uc11c \uc124\uba85\ud55c <a href=\"https:\/\/www.kowanas.com\/coding\/2020\/11\/29\/%ec%8b%b1%ea%b8%80%ed%86%a4-%ed%8c%a8%ed%84%b4\/\">Thread Safe \uc2f1\uae00\ud1a4 \ud328\ud134 \ucf54\ub4dc<\/a>\ub97c pytest\ub97c \uc774\uc6a9\ud558\uc5ec \uc218\uc815\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Singleton.py<\/strong><\/h4>\n\n\n\n<p>\uc774\uc804\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from threading import Lock\n\nclass Singleton(type):\n    _instance = None\n    _lock = Lock()\n\n    def __call__(cls, *args, **kwargs):\n        with cls._lock:\n            if not cls._instance:\n                cls._instance = super().__call__(*args, **kwargs)\n        return cls._instance<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">SingletonClass.py<\/h4>\n\n\n\n<p><strong>\ub2e4 \uac19\uc9c0\ub9cc if __name__ == &#8216;__main__&#8217;: \uc774 \uc5c6\uc5b4\uc84c\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<p><strong>\uc774 \ucf54\ub4dc\ub97c pytest code\ub85c \uc62e\uae30\ub294 \uac83\uc774 \ud575\uc2ec\uc785\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from Singleton import Singleton\n\nclass SingletonClass(metaclass=Singleton):\n    def __init__(self, name):\n        self.name = name\n\n    def __str__(self):\n        return self.name;    <\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">tests\/test_SingletonClass.py<\/h4>\n\n\n\n<p>def run\uc740 test_\uac00 \uc5c6\uae30 \ub54c\ubb38\uc5d0 pytest\uc5d0 \uc758\ud574\uc11c \uc2e4\ud589\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>test_Singleton\uc740 pytest\uc5d0 \uc758\ud574\uc11c \uc2e4\ud589\ub429\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import sys\nsys.path.append('..')\nfrom SingletonClass import SingletonClass\nfrom threading import Thread\n\ndef run(name, result):\n    singleton = SingletonClass(name)\n    result[0] = str(singleton)\n\ndef test_Singleton():\n    resultA = ['A']\n    resultB = ['B']\n    processa = Thread(target=run, args=('ACLASS', resultA))\n    processb = Thread(target=run, args=('BCLASS', resultB))\n    processa.start()\n    processb.start()\n    assert(resultA[0] == resultB[0])<\/code><\/pre>\n\n\n\n<p>\uc704 \ucf54\ub4dc\uc5d0\uc11c \ucd94\uac00 \uc124\uba85\uc774 \ud544\uc694\ud55c \ucf54\ub4dc\ub294 \ub2e4\uc74c\uacfc \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>sys.path.append(&#8216;..&#8217;)\ub294 \uc0c1\uc704 \ud3f4\ub354 \ubaa8\ub4c8\uc744 \ucc38\uc870\ud558\uace0\uc790 path\uc5d0 \ud574\ub2f9 \uacbd\ub85c\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/li><li>resultA\uc640 resultB\uac00 List\uc778 \uc774\uc720\ub294 \uacb0\uacfc\uac12\uc744 thread process function\uc73c\ub85c\ubd80\ud130 \ubc1b\uc544\uc624\uace0\uc790 \ud558\uba74\uc11c List\ub294 Shallow copy\uac00 \ub418\uae30 \ub54c\ubb38\uc785\ub2c8\ub2e4. \uc989, run\uc548\uc5d0\uc11c resultA\uac00 \uc0c8\ub85c \uc0dd\uc131\ub418\uc9c0 \uc54a\uace0 test_Singleton\ub0b4\uc5d0 \ub9cc\ub4e4\uc5b4\uc9c4 resultA \uac1d\uccb4\uac00 \uadf8\ub300\ub85c \uc804\ub2ec\ub418\uc5b4 run \ud568\uc218 \uc548\uc5d0\uc11c list \ub0b4\ubd80\uc758 \uac12\uc744 \uc218\uc815\ud558\ub294 \uac83\uc740 \uac19\uc774 \uc218\uc815\ub429\ub2c8\ub2e4.<\/li><li>assert (resultA[0] == resultB[0]) \uc740 True\uc774\uba74 pass, False\uc774\uba74 Fail\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">\uacb0\uacfc<\/h2>\n\n\n\n<p>\uacb0\uacfc\ub294  test_SingletonClass.py\uc5d0\uc11c 1\uac1c\uc758 test case\uac00 \ubc1c\uacac\ub418\uc5b4 pass\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"829\" height=\"155\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png\" alt=\"\" class=\"wp-image-210\" srcset=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png 829w, https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25-300x56.png 300w, https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25-768x144.png 768w\" sizes=\"auto, (max-width: 829px) 100vw, 829px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">python\uc5d0\uc11c Unit Test \uc5d0 \ub300\ud55c \uac1c\uc778\uc801 \uc758\uacac<\/h2>\n\n\n\n<p>\uc800\ub294 python\uc740 \uc8fc\ub85c command base\uc758 program \ud2b9\ud788 backend Program\uc6a9\uc73c\ub85c \ub9ce\uc774 \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub807\ub2e4 \ubcf4\ub2c8 UI\uac00 \uc788\ub294 Front End\ubcf4\ub2e4\ub294 \uc9c1\uc811 \uc190\uc73c\ub85c \ud574\ubcfc\ub9cc\ud55c UI\ub294 \uc5c6\uace0 command\ub85c\ub9cc \uc774\ub8e8\uc5b4\uc9d1\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\uc804\uae4c\uc9c0\ub9cc \ud574\ub3c4 if __name__ == &#8220;__main__&#8221;: \uc744 \uc0ac\uc6a9\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud56d\uc0c1 \ud30c\uc77c \uc544\ub798\uc5d0 \ucd94\uac00\ud574\uc11c \uc0ac\uc6a9\ud588\ub294\ub370\uc694.<\/p>\n\n\n\n<p>\ub2e4\uc74c\uc758 \ubb38\uc81c\ub4e4\uc774 pytest\ub97c \uc0ac\uc6a9\ud568\uc73c\ub85c\uc368 \ud574\uacb0\uc774 \ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc989, \ubc18\ub300\ub85c pytest\ub97c \uc0ac\uc6a9\ud588\uc744\ub54c\uc5d0\ub294 \uc7a5\uc810\uc774 \ub418\uaca0\uc8e0?<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ubaa8\ub4e0 \ud30c\uc77c\uc744 \uc77c\uc77c\ud788 \uc2e4\ud589\ud574\uc57c \ud55c\ub2e4.<\/li><li>\uc77c\uad00\ub41c test case\ub97c \ub9cc\ub4e4\uc9c0 \uc54a\uac8c \ub41c\ub2e4.<\/li><li>Test Code Coverage\uac00 \ub0ae\ub2e4.<\/li><li>import\uac00 \ubcf5\uc7a1\ud574\uc9c4\ub2e4.<\/li><\/ul>\n\n\n\n<p>pytest\ub85c \ub300\uccb4\ud588\uc744\ub54c \ub2e8\uc810\uc740 \ub531 \ud558\ub098\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\ucf54\ub529\ud560 \ub54c \uc2dc\uac04\uc774 \ub354 \uac78\ub9b0\ub2e4.<\/li><\/ul>\n\n\n\n<p>\ud558\uc9c0\ub9cc \uc55e\uc73c\ub85c Rest API\ub97c release\ud558\ub294\ub370 \uc788\uc5b4 \ub9e4\uc6b0 \uc911\uc694\ud55c \ud3ec\uc778\ud2b8\uac00 \ub420\uac83 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \uc800\uc758 Python \ud658\uacbd\uc740 3.4\uc774\uc0c1\uc774\uba70 \uc800\ub294 \ud604\uc7ac 3.6.9\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. 3.4\uc774\ud558\uc5d0\uc11c\ub294 \uc5d0\ub7ec\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4. \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4. \uc624\ub298\uc758 \ud575\uc2ec\uc740 if __name__ == &#8216;__main__&#8217;: \ub300\uc2e0 pytest\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc744 &#8230; <a title=\"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest )\" class=\"read-more\" href=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/\" aria-label=\"Read more about Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest )\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,13],"tags":[25,29],"class_list":["post-208","post","type-post","status-publish","format-standard","hentry","category-programming","category-13","tag-python","tag-29"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest ) - Kowana&#039;s coding<\/title>\n<meta name=\"description\" content=\"\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\uace0 \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest ) - Kowana&#039;s coding\" \/>\n<meta property=\"og:description\" content=\"\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\uace0 \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/\" \/>\n<meta property=\"og:site_name\" content=\"Kowana&#039;s coding\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-19T06:47:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-19T07:06:19+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png\" \/>\n\t<meta property=\"og:image:width\" content=\"829\" \/>\n\t<meta property=\"og:image:height\" content=\"155\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"kowana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"kowana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/\",\"url\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/\",\"name\":\"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest ) - Kowana's coding\",\"isPartOf\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png\",\"datePublished\":\"2020-12-19T06:47:06+00:00\",\"dateModified\":\"2020-12-19T07:06:19+00:00\",\"author\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af\"},\"description\":\"\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\uace0 \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#primaryimage\",\"url\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png\",\"contentUrl\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png\",\"width\":829,\"height\":155},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kowanas.com\/coding\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest )\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#website\",\"url\":\"https:\/\/www.kowanas.com\/coding\/\",\"name\":\"Kowana's coding\",\"description\":\"\ucc9c\ucc9c\ud788 \ud55c\uac78\uc74c\uc529 \ud55c\uac78\uc74c\uc529 \ucf54\ub529\uc774 \ub300\uc138\ub780\ub2e4 \uc544\ub4e4\uc544\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kowanas.com\/coding\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af\",\"name\":\"kowana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g\",\"caption\":\"kowana\"},\"url\":\"https:\/\/www.kowanas.com\/coding\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest ) - Kowana's coding","description":"\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\uace0 \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/","og_locale":"en_US","og_type":"article","og_title":"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest ) - Kowana's coding","og_description":"\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\uace0 \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.","og_url":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/","og_site_name":"Kowana's coding","article_published_time":"2020-12-19T06:47:06+00:00","article_modified_time":"2020-12-19T07:06:19+00:00","og_image":[{"width":829,"height":155,"url":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png","type":"image\/png"}],"author":"kowana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"kowana","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/","url":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/","name":"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest ) - Kowana's coding","isPartOf":{"@id":"https:\/\/www.kowanas.com\/coding\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#primaryimage"},"image":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png","datePublished":"2020-12-19T06:47:06+00:00","dateModified":"2020-12-19T07:06:19+00:00","author":{"@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af"},"description":"\uc800\ub294 pytest \ub97c coding\uc911\uc5d0 Unit Test \ub97c \uc704\ud574\uc11c \uc0ac\uc6a9\ud569\ub2c8\ub2e4. \ubc18\ub4dc\uc2dc pytest\ub97c \uc0ac\uc6a9\ud574\uc57c \ud558\ub294 \uac83\uc740 \uc544\ub2c8\uace0 \ub2e4\ub978 unit test lib\ub4e4\uc774 \ub9ce\uc774 \uc788\uc2b5\ub2c8\ub2e4\ub9cc \uc800\ub294 pytest\ub97c \uc8fc\ub85c \uc0ac\uc6a9\ud558\uae30 \ub54c\ubb38\uc5d0 \uc55e\uc73c\ub85c pytest\ub97c \uc0ac\uc6a9\ud558\uba74\uc11c \ucf54\ub4dc \uc124\uba85\ud574\ub098\uac08 \uc608\uc815\uc785\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#primaryimage","url":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png","contentUrl":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-25.png","width":829,"height":155},{"@type":"BreadcrumbList","@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/19\/unit-test\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kowanas.com\/coding\/"},{"@type":"ListItem","position":2,"name":"Start Python #2 Unit Test \uc0ac\uc6a9\ud558\uae30 ( feat. pytest )"}]},{"@type":"WebSite","@id":"https:\/\/www.kowanas.com\/coding\/#website","url":"https:\/\/www.kowanas.com\/coding\/","name":"Kowana's coding","description":"\ucc9c\ucc9c\ud788 \ud55c\uac78\uc74c\uc529 \ud55c\uac78\uc74c\uc529 \ucf54\ub529\uc774 \ub300\uc138\ub780\ub2e4 \uc544\ub4e4\uc544","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kowanas.com\/coding\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af","name":"kowana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g","caption":"kowana"},"url":"https:\/\/www.kowanas.com\/coding\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/comments?post=208"}],"version-history":[{"count":3,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/208\/revisions"}],"predecessor-version":[{"id":215,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/208\/revisions\/215"}],"wp:attachment":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/media?parent=208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/categories?post=208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/tags?post=208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}