Upgrade to Pro — share decks privately, control downloads, hide ads and more …

pytestによるCIレボリューション

abenben
September 17, 2019

 pytestによるCIレボリューション

2019年9月17日にPyCon JP 2019(https://pycon.jp/2019/)で発表したスライドです
※時間が足りなくて発表できなかったスライドも後半に少し入ってます。
https://pycon.jp/2019/sessions

abenben

September 17, 2019
Tweet

More Decks by abenben

Other Decks in Technology

Transcript

  1. n ๺ւಓʢ಩খ຀ʣੜ·Ε n ๭ۚ༥ػؔͷ *5ςΫϊϩδετ n ϏδωεϞσϧΠϊϕʔγϣϯڠձ ೝఆδϡχΞίϯαϧλϯτ n ࣗ཯෼ࢄࣾձϑΥʔϥϜ

    %"4'ʣձһ  ࢓ࣄ ɾΫϥ΢υಋೖɾݚڀɾ։ൃͷαϙʔτɺ࠷৽ٕज़ͷϦαʔν  ͓֎Ͱͷ׆ಈ ɾ8FCɺϒϩοΫνΣʔϯ΍ྔࢠίϯϐϡʔλʔٕज़։ൃˍ ίϛϡχέʔλʔ ɾΤϯδχΞ޲͚ͷίϛϡχςΟͷӡӦ ʢ4UBSU1ZUIPO$MVCɺGJOQZɺ95FDI +"84ɺ 'JO+"84ɺGPVOE *5QSPKFDUɺദͷ༿ˍͭ͘͹ϏοτίΠϯͷछྨʣ ɾςοΫ·ͨ͸ϏδωεΠϕϯτͷاըɾߨԋ ɾ*5ؔ࿈ॻ੶ͷ؂मɾࣥචɾϨϏϡʔ ݄೔ൃച
  2. ςετۦಈ1ZUIPO ʲ໨࣍ʳ $)"15&3͸͡ΊͯͷQZUFTU $)"15&3ςετؔ਺Λ࡞੒͢Δ $)"15&3QZUFTUͷϑΟΫενϟ $)"15&3૊ΈࠐΈϑΟΫενϟ $)"15&3ϓϥάΠϯ $)"15&3ߏ੒ $)"15&3QZUFTUΛଞͷπʔϧͰ࢖ͬͯΈΔ ෇࿥"Ծ૝؀ڥ

    ෇࿥#QJQ ෇࿥$QZUFTUͷϓϥάΠϯ ෇࿥%1ZUIPOϓϩδΣΫτͷύοέʔδԽͱ഑෍ ෇࿥&Y6OJUϑΟΫενϟ ˞ ෇࿥'Ϋϥ΢υͰQZUFTUΛ࢖͏ $JSDMF$* ˞ ෇࿥(QZUFTUΛ༻͍ͨςετۦಈ։ൃ ˞ ೔ຊޠ຋༁൛ͷΈ https://www.shoeisha.co.jp/book/detail/9784798157603
  3. ςετͷछྨ ςετͷछྨ ಺༰ උߟ Ϣχοτςετ ؔ਺΍ΫϥεͳͲɺίʔυͷ͘͝Ұ෦ΛνΣο Ϋ͢Δςετɻ ϗϫΠτϘοΫςετ ݁߹ςετ ෳ਺ͷΫϥε΍αϒγεςϜͳͲɺҰճΓେ͖

    ͳίʔυΛνΣοΫ͢Δςετɻ ϗϫΠτϘοΫςετ γεςϜςετ ςετ͍ͯ͠ΔςετશମΛνΣοΫ͢Δςε τɻຊ൪؀ڥʹ͍ۙ؀ڥͰςετΛ͢Δɻ ϒϥοΫϘοΫεςετ ػೳςετ γεςϜશମͷػೳͱੑೳΛςετ͢Δɻ γεςϜ͕ސ٬ͷཁٻΛຬ͍ͨͯ͠Δ͔Λςε τ͢Δɻ ϒϥοΫϘοΫεςετ ൽԼςετ ࠷ऴతͳΤϯυϢʔβʔͷΠϯλϑΣʔεʹର ࣮ͯ͠ߦ͞ΕΔͷͰ͸ͳ͘ɺද໘ͷ͙͢Լʹ͋ ΔΠϯλʔϑΣʔεʹର࣮ͯ͠ߦ͢Δςετɻ "1*૚ʹରͯ͠ߦ͏ςετɻ ϒϥοΫϘοΫεςετ
  4. 1ZUIPOͷϢχοτςετϑϨʔϜϫʔΫ VOJUUFTU OPTFςετ ࣍ϖʔδͰઆ໌ 1ZUIPOͷඪ४ϥΠϒ ϥϦͱͯ͠༻ҙ͞Εͯ ͍Δɻ +6OJUΛϕʔεʹͯ͠ ͍Δʢ5FTU$BTFΛܧ ঝ͢Δඞཁ͕͋Δʣɻ

    ଟ࠼ͳΦϓγϣϯͰॊ ೈͳςετ͕Ͱ͖ɺΧ όϨοδΛऔΔ͜ͱ΋ Ͱ͖Δɻ %4-ه๏ʹରԠ͍ͯ͠ Δɻ ಛఆͷΫϥεΛܧঝ͢ Δඞཁ͕ͳ͍
  5. QZUFTUͷಛ௃ • QZUFTUͰ͸ɺ୯७ͳςετΛॻ͘ͷ͕؆୯Ͱ͋Δɻ • ෳࡶͳςετΛॻ͘ͷ΋؆୯Ͱ͋Δɻ • QZUFTUͷςετ͸ಡΈ΍͍͢ɻ • QZUFTUͷςετ͸ಡΈ΍͍͢ʢॏཁͳͷͰ̎ճॻ͖·ͨ͠ʣɻ •

    ΋ͷͷ਺ඵͰ࢖͍࢝ΊΔ͜ͱ͕Ͱ͖Δɻ • ςετΛࣦഊͤ͞Δʹ͸BTTFUΛ࢖༻͢ΔɻTFMGBTTFSU&RVBM Ͱ΋ TFMGBTTFSU-FTT5IBO Ͱ΋ͳ͘ɺͨͩͷBTTFSUͰ͋Δɻ • VOJUUFTU·ͨ͸OPTF༻ʹॻ͔Εͨςετ͸QZUFTUͰ࣮ߦͰ͖Δɻ ʮςετۦಈ1ZUIPOʯ!ᠳӭࣾΑΓ $ pip install pytest でインストール
  6. Ճࢉͷςετ ᶃςετύλʔϯͷ഑ྻ ʢҎԼͷͭΛνΣοΫΛ͢Δʣ       

      ᶆςετͷ࣮ࢪ ᶄςετύλʔϯΛ ࣮̍ͮͭࢪ ᶅςετσʔλͷՄࢹԽํ๏
  7. 74$PEFͱ͸ • ϚΠΫϩιϑτʹΑͬͯ։ൃ͞Ε͍ͯΔιʔείʔυΤσΟλɻ ʢ೥ϦϦʔεʣ • ιʔείʔυ͕ϋΠϥΠτදࣔ͞ΕΔɻ ʢ༷ʑͳϓϩάϥϛϯάݴޠʹରԠʣ • ϑΝΠϧ΍ϑΥϧμͷ؅ཧ͕؆୯ɻ •

    ศརͳ֦ுػೳ͕͋Δɻ • ̎ͭͷϑΝΠϧΛಉ࣌ʹ։͍ͯ ࡞ۀͰ͖Δɻ • ίʔυͷࣗಈิ׬ػೳɻ • ೔ຊޠઃఆɻ • 8JEPXT049-JOVYͰಈ࡞Մೳɻ
  8. 1Z$IBSNͱ͸ • ߴ඼࣭ͳ*%& • 8JEPXT049-JOVYͰಈ࡞Մೳɻ • 1SPGFTTJPOBM&EJUJPOʢ༗ঈ൛ʣͱ$PNNVOJUZ&EJUJPOʢແঈ൛ʣ͕͋Δɻ • 8FC։ൃʹ͸1SPGFTTJPOBM&EJUJPO͕͓קΊɻ +BWB4DSJQUɺ$PGGFF4DSJQUɺ5ZQF4DSJQUɺ)5.-$44αϙʔτ

    ϑϨʔϜϫʔΫɿ%KBOHPɺ'MBTLɺ(PPHMF"QQ&OHJOFɺ1ZSBNJEɺXFCQZͷαϙʔτ σʔλϕʔεͱ42-ͷαϙʔτ • ༗ঈ൛ʹ͸೔ؒͷ ϑϦʔτϥΠΞϧ͕͋ΔͷͰ·ͣ͸ମݧɻ • ೔ຊޠઃఆ΋Մೳ ʢ&1-ϥΠηϯεͰผஂମ͕ఏڙʣ IUUQTRJJUBDPNTVFDIBSPJUFNTECCGG • ςετϑϨʔϜϫʔΫʹରԠʢ༗ঈ൛ͷΈʣ
  9. $*$%ͱ͸ $* $% $POUJOVPVT*OUFHSBUJPO $POUJOVPVT%FMJWFSZ ܧଓతΠϯςάϨʔγϣϯ ܧଓతσϦόϦʔ ։ൃऀ޲͚ͷࣗಈԽϓϩηεɻ ৽͍͠ίʔυมߋ͕ఆظతʹϏϧυɺ ςετ͞Εɺ౷߹ϦϙδτϦʹ౷߹

    ͞ΕΔ͜ͱɻ όάͷࣗಈൃݟɺख࡞ۀͷഉআɺೲ ظ୹ॖͳͲͷ։ൃޮ཰Խ͕໨తɻ ։ൃऀʹΑΔมߋΛϦϙδτϦ͔Β ຊ൪؀ڥʹࣗಈతʹϦϦʔε͠ɺސ ٬͕࢖༻Ͱ͖ΔΑ͏ʹ͢Δ΋ͷɻ ৽نίʔυͷಋೖ࡞ۀͷෛ୲Λ࠷খ ݶʹ͢Δͷ΋໨తɻ