ã¦ããããã¹ã åºç¤è¬åº§ Jun. 7, 2025 @JJUG CCC 2025 Spring Takeshi Yonekubo
ã¦ããããã¹ã åºç¤è¬åº§ Jun. 7, 2025 @JJUG CCC 2025 Spring Takeshi Yonekubo
Hypothesisã¨ã¯ä½ããããããã£ãã¼ã¹ãã¹ãã¨ã¯ä½ã Hypothesisã¯ãPythonåãã®ããããã£ãã¼ã¹ãã¹ãã®ã©ã¤ãã©ãªã§ããã ããããã£ãã¼ã¹ãã¹ãã¯ãçæããã夿°ã®å ¥åãã¼ã¿ã«å¯¾ãã¦ããããã£(æ§è³ª)ãæºãããããã©ããããã¹ãããææ³ã§ããã Haskellã®QuickCheckã©ã¤ãã©ãªãååºã§ãç¾å¨ã¯åããã°ã©ãã³ã°è¨èªã«ç§»æ¤ããã¦ããã 徿¥ã®ã¦ããããã¹ãã¯ãããç¨åº¦åºå®ãããã¹ããã¼ã¿ãæå®ãã¦ãã¹ããè¡ã£ã¦ããã ãã®éãå¢çå¤åæãªã©ã§å¦¥å½ãªãã©ã¡ã¼ã¿ã決å®ãã¦ããã ããããå¢çå¤åæãå¿ ãéç¨ããã¨ã¯éããªããã人éãè¡ã以ä¸ããã¹ãçºçããã ããããã£ãã¼ã¹ãã¹ãã¯ãã¼ã¿ãåºå®ãã代ããã«ãã®ãã¼ã¿ãæºããããããã£ãæå®ãã¦ãã¹ããè¡ãã å®éã®ãã¹ãã±ã¼ã¹ã¯Hypothesisãããããã£ãæºãããã©ã¡ã¼ã¿ã決ãã¦çæãã¦ãããã 人å
ã¯ããã« éå±ãªãã¨ã¯Pythonã«ããããã1ãnikkieã§ãã Pythonã®ã¦ããããã¹ããã¬ã¼ã ã¯ã¼ã¯ã®1ã¤ãpytestã pytestã¯ãã©ã¡ã¿åãããã¹ããå¯è½ã«ãã¦ãããã®ã§ããããã©ã¡ã¿åãããã¹ãã«ã¤ãã¦æè¿ç¥ã£ãå°ããtipsãã¢ã¦ãããããã¾ãï¼ ç®æ¬¡ ã¯ããã« ç®æ¬¡ åææ å ± ä»åã®åèæç® åä½ç°å¢ pytestã§ãã©ã¡ã¿åãããã¹ã ð¡1ï¸â£ ã¯ã©ã¹ããã³ã¬ã¼ãã§ãã @pytest.mark.parametrizeã®ä¸æè° ð¡2ï¸â£ ãã³ã¬ã¼ã¿ãè¤æ°ç©ããï¼èªåã§çµåãã¦ãããï¼ï¼ ãã¼ãIDã«ã¤ã㦠ããã¥ã¡ã³ããHow to parametrize fixtures and test functionsãã«ã¯ã¾ã ã¾ã tipsæºè¼ï¼ çµããã« P.S. ç©ããã®ã«æ°ã¥ããã®ã¯ChatGPTã®ãããï¼ åææ å ± ä»åã®åèæç® ããã¹ãé§åPython
leiningenã使ã£ã¦ããããã¸ã§ã¯ãã§ãã¦ããããã¹ããå®è¡ããæ¹æ³ã«ã¤ãã¦æ´çãã¾ãã ã¦ããããã¹ããå®è¡ãã $ lein test ç¹å®ã®namespaceã®ã¦ããããã¹ãã ãå®è¡ãã $ lein test sample-app.core-test ãã¹ããã¡ã¿ãã¼ã¯ã¼ãã§ã°ã«ã¼ãã³ã°ãã¦ããã®ã°ã«ã¼ãã®ãã¹ãã ããå®è¡ãã project.cljã«test-selectorsã追å ãã . . :test-selectors {:api :api :model :model :core :core)} . ãã¹ãã³ã¼ãã«ãã¼ã¯ã¼ããæå®ãã (ns ^:core sample-app.core-test (require [clojure.test :refer :all] [sample-app.core :refer :all])) (deftest ^:api a-
Contents unittest ã广çã«ä½¿ãããã®è¦æ¸ ç®ç ã«ã¼ã«: ãã¹ã対象ã®ã¢ã¸ã¥ã¼ã«(module-under-test)ããã¹ãã¢ã¸ã¥ã¼ã«ã«ç´æ¥importããªã ã¬ã¤ãã©ã¤ã³: ã¢ã¸ã¥ã¼ã«ã¹ã³ã¼ãã§ã®ä¾åãæå°éã«ãã ã«ã¼ã«: åãã¹ãã¡ã½ããã§ã¯ãï¼ã¤ã®äºå®ã ãã確èªãã ã«ã¼ã«ï¼ ãã¹ãã¡ã½ããã¯å 容ã表ãããã«ããã ã¬ã¤ãã©ã¤ã³: setupã¯ãã«ãã¼ã¡ã½ããã§æä¾ãããããã¹ãã±ã¼ã¹ã®selfã§å ±æããã®ã¯ããããã ã¬ã¤ãã©ã¤ã³: ãã£ã¯ã¹ãã£ã¯å¯è½ãªéãç°¡æ½ã« ã¬ã¤ãã©ã¤ã³ï¼ ããã¯ãã¬ã¸ã¹ããªãªã©ã®å©ç¨ã¯æ³¨ææ·±ã ã¬ã¤ãã©ã¤ã³: ä¾åé¢ä¿ãæç¢ºã«ããããã«ã¢ãã¯ãå©ç¨ãã ã«ã¼ã«: ãã¹ãã¢ã¸ã¥ã¼ã«éã§ããã¹ããå ±æããªã ã¾ã¨ã https://twitter.com/tokibito/status/412074246026698753 ã¨ãããã¨ã§
Watch Now This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Improve Your Tests With the Python Mock Object Library Mocking in Python with unittest.mock allows you to simulate complex logic or unpredictable dependencies, such as responses from external services. You create mock objects to replace real
Pythonã«ã¦ããã¡ã½ãããå·®ãæ¿ãããã¹ã対象ãªãã¸ã§ã¯ãã®å±æ§ãæ´æ°ããããã¹ãã³ã¼ãã使ããæ©ä¼ããã£ããããã¡ã¢ãæ®ãã¾ãã ãªããè¯ãã¿ã¤ãã«ãæãæµ®ãã³ã¾ããã§ããã®ã§ãmock.object(autospect=True)ã®ãµã³ãã«ã¨ãã¦èãã¦ãã ããâ¦ ç®æ¬¡ ç°å¢ ç¶æ³ å¯¾å¿ ã½ã¼ã¹ã³ã¼ã ç°å¢ Python 3.6.0 unittest.mock.patch.objectãä½¿ç¨ pytest 3.0.6 ãã¹ãã©ã³ãã¼ã¨ãã¦ä½¿ç¨ ç¶æ³ ãããªãã¹ã対象ã³ã¼ããããã¾ããã class Target(object): def target_method(self): self.can_print = False # ãã®ä¸ã§self.can_printãæ´æ°ãã¦ããããæ»ãå¤ã¯ä½ããªã self.validate() if self.can_print: return
ã½ããã¦ã§ã¢ã¨ã³ã¸ãã¢ã«ã¨ã£ã¦ãä¸å ·åã«å¯¾æããæãä¸è¬çãªæ¹æ³ã¯èªååããããã¹ããæ¸ããã¨ã ãã¹ãã§ã¯ãæ¸ããããã°ã©ã ã誤ã£ãæ¯ãèããããªãã確èªããã ä¸å£ã«èªåãã¹ãã¨ãã£ã¦ããæ±ãã¬ã¤ã¤ã¼ã«ãã£ã¦è²ã ãªãã®ãããã ä»åã¯ããã®ä¸ã§ãæãããªããã£ããªãã¹ãã§ããã¦ããããã¹ãã«ã¤ãã¦æ±ãã ã¦ããããã¹ãã§ã¯ã颿°ãã¯ã©ã¹ãã¡ã½ããã¨ãã£ãåä½ã®æ¯ãèãã«ã¤ãã¦ãã¹ããæ¸ãã¦ããã Python ã«ã¯æ¨æºã©ã¤ãã©ãªã¨ã㦠unittest ã¨ããããã±ã¼ã¸ãç¨æããã¦ããã ããã¯ãæåéã Python ã§ã¦ããããã¹ããæ¸ãããã®ããã±ã¼ã¸ã¨ãªã£ã¦ããã ãã®ã¨ã³ããªã§ã¯ãæåã« unittest ããã±ã¼ã¸ã使ã£ã¦ã¦ããããã¹ããæ¸ãæ¹æ³ã«ã¤ãã¦ç´¹ä»ããã ãã®ä¸ã§ãããã«å¹ççã«ãã¹ããè¨è¿°ããããã«ãµã¼ããã¼ãã£è£½ã®ã©ã¤ãã©ãªã§ãã pytest ã使ã£ã¦ããã
FastAPI Pythonã®Web frameworkã§ãFlaskã®ãããªãã¤ã¯ããã¬ã¼ã ã¯ã¼ã¯ã«ãããã¾ãã ããã©ã¼ãã³ã¹ã®é«ããæ¸ãããããæ¬çªéç¨ãå¼·ãæèããè¨è¨ãã¢ãã³ãªæ©è½ãªã©ãå¼·ã¿ã§ãã FastAPIã¯Starletteã®è©ã«ä¹ãå½¢ã§æ¸ããã¦ãããéåæå¦çãæ±ããããã§ãã ç¹ã«ã以ä¸ã®æ§ãªç¹å¾´ãããã¾ãã ASGI websocketã®ãµãã¼ã GraphQLã®ãµãã¼ã ããã¯ã°ã©ã¦ã³ãããã»ã¹ãæ±ãããã python type hintã«ããèªåããã¥ã¡ã³ãçæ (Swagger UI) pydanticããã¼ã¹ã¨ããdata validation çç´ã«è¨ã£ã¦ãresponderã«é常ã«ä¼¼ã¦ãã¾ãã(ã§ãææãè¿ãã§ãããresponderãStarletteããã¼ã¹ãªã®ã§) ã§ãããä¸ã®2ã¤ã¯FastAPIã®æ¹ããã£ã½ã©ä½¿ããããè¨è¨ããã¦ãã¾ãã 以ä¸ã®
ãªãªã¼ã¹ãé害æ å ±ãªã©ã®ãµã¼ãã¹ã®ãç¥ãã
ææ°ã®äººæ°ã¨ã³ããªã¼ã®é ä¿¡
å¦çãå®è¡ä¸ã§ã
j次ã®ããã¯ãã¼ã¯
kåã®ããã¯ãã¼ã¯
lãã¨ã§èªã
eã³ã¡ã³ãä¸è¦§ãéã
oãã¼ã¸ãéã
{{#tags}}- {{label}}
{{/tags}}