【Pythonプログラミング入門】テストコードの書き方を解説!(pytest) 〜VTuberと学習〜 【初心者向け】

แชร์
ฝัง
  • เผยแพร่เมื่อ 3 ม.ค. 2025

ความคิดเห็น • 38

  • @peanutsHanako
    @peanutsHanako 2 ปีที่แล้ว +3

    4月から始めたど初心者です。
    本をよんでテストコード書いてみて!と言われましたが何を聞いたらいいのかわからないくらい何も分からなくて、この動画に救われました。感謝です😭

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +2

      ご視聴いただきありがとうございます😊
      テストコードを書くのが初めてなのですかね!この動画が少しでもお役に立っていたら嬉しいです✨

  • @CHichi-dk4cp
    @CHichi-dk4cp 3 ปีที่แล้ว

    python初心者です。
    業務でスクレイピングがあり、単体テストでpytestを利用するためリファレンスを見る前に試聴させていただきました。
    先に見てよかったです。ありがとうございます。

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +1

      ご視聴いただき、ありがとうございます!!
      スクレイピングの単体テストだとモックを使う感じですかね!参考になれば嬉しいです😊

  • @hajimenagao8806
    @hajimenagao8806 2 หลายเดือนก่อน

    3年前ですかこちらの動画当時は、テスト... という感じでスルーしちゃってたけど、これは僕的には必須になりました。

    • @pythonvtuber9917
      @pythonvtuber9917  2 หลายเดือนก่อน

      その時々によって必要な技術や情報が違いますからね!この動画がお役に立ってたら嬉しいです☺️

  • @souheimitsukawa8564
    @souheimitsukawa8564 3 ปีที่แล้ว +2

    ちょうど気になっていた話題だったので、ありがとうございます。
    もしよろしければ、今度デバッガのpdbについて、解説いただけるとうれしいです。

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +2

      ご視聴いただき、ありがとうございます😊
      pdbですね!すぐにはアップできないかもしれませんが、解説動画作ってみますね!!

  • @9211-l2g
    @9211-l2g ปีที่แล้ว

    requestsをまだインストールしてない人はまず、
    pip install requests
    をやっておいたほうがいいですね!

  • @takek9215
    @takek9215 ปีที่แล้ว

    例外処理はすべてトラップするべき?あえて最小限にして上のスタックに任せるべき?

  • @yuurei9393
    @yuurei9393 3 ปีที่แล้ว +3

    Im not exactly an absolute beginner at programming, but i haven't coded for some time and i need to review. Im also learning Japanese so I thought maybe ill go try searching for programming videos that are in Japanese language, so that's how I got here.
    This video helped me a lot. Thank you!!

    • @pythonvtuber9917
      @pythonvtuber9917  3 ปีที่แล้ว +2

      Thank you for watching!
      I hope you like my video.
      I have to study more English...

    • @yuurei9393
      @yuurei9393 3 ปีที่แล้ว +1

      私も日本語とプログラミングもっと勉強しなきゃ
      一緒に頑張りましょうね!

  • @druib43
    @druib43 ปีที่แล้ว

    14:35
    get_json_data_mock(id)
    は、テストコードで使用してないように思えるのですが、引数なしだとエラーが出ますか???

  • @rippy
    @rippy 2 ปีที่แล้ว

    色々見て分からなかったテストの流れがやっと判りました!テストの内容が妥当かとか、とりえる入力をカバーしてるかは頑張って目視でチェックするしかないんでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +1

      そうですね、境界値や代表値などを丁寧に設計してテスト項目と入力値を決めるやり方もあります。あとはプロパティベーステストというのがあって、入力値の定義からテストデータを自動生成させてテストを回す方法もあったりしますね!

    • @rippy
      @rippy 2 ปีที่แล้ว

      @@pythonvtuber9917 ありがとうございます!テストでNG出たり元の関数編集したりしてるうちに、テスト内容と関数の整合取り続けるのがすごい大変そうですが、がんばってみます!

  • @nabetyanjp0316
    @nabetyanjp0316 2 ปีที่แล้ว

    この動画5パターンをcode1、code2、...と全てのコードでうまく処理できました。
    ただ、古いノートPCにPython3.10.4とVscode、Pytcarm、JupyterLab、DocerDisktop
    版(使った事まだない)で環境構築したので処理時間がサプーさんの出て来る秒数の倍
    はかかっています。( ´艸`) 空の__init__.pyはこれら全ての処理に必要なんですか❓
    自分で消して試せば解かるはずですが。

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +1

      ご質問ありがとうございます!
      そうですね、テストファイルが入っているフォルダには全て空の__init__.pyを入れておいてあげてください😉

  • @Towamaru
    @Towamaru 2 ปีที่แล้ว

    自分の記述がどこか間違っているのかもしれないのですが、
    何回見返してもスペルミスなど問題点が分からないのでコメントします。
    モックの説明の箇所なのですがpytestをすると
    test_code.py:10: in
    assert list(result.keys()) == ['001', '009']
    E NameError: name 'result' is not defined
    ERROR test_code.py - NameError: name 'result' is not defined
    とでて、result = code.get_user_names(['001', '009'])の部分のresultへ
    キー001,009の代入ができていない?ようなのです。
    なにか仕様が変わったのか、私の環境のせいなのか不明ですが、
    もしわかれば教えていただきたいです。
    毎日1動画、わかるまで繰り返し勉強して進んでいます。
    最新動画まで到達はまだ先ですが、毎日楽しませてもらっています。

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      ご質問ありがとうございます。
      エラーを見る限りresultが定義されていないのだと思います。resultはどのように定義していますか?また、定義済みであればそのresultに何の値が入っているかprint文などで出力してみてはいかがでしょうか?

    • @Towamaru
      @Towamaru 2 ปีที่แล้ว

      お返事ありがとうございます。もう一度、今度は新しいフォルダに作り直して再度書き直してみましたが、まったく同じエラーになり、一つ一つ文字を確認していったところ、assertの行のインデントが一つずれていることを発見し、直したらうまくいきました。単純ミスでまことに申し訳ないです。インデントをカラーで表示するアドオンは絶対必要なんだと感じました。

  • @hiroyama3975
    @hiroyama3975 2 ปีที่แล้ว

    assertの使い方を説明している動画は貴チャンネルにありますでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      assertの細かい解説動画は出していないですね...確か、assert自体が出てくるのがこの動画のみです

  • @テオーリア-p5c
    @テオーリア-p5c 2 ปีที่แล้ว

    真似してやってみたらtest_code.pyを実行したときにsrcモジュールが見つからないというエラーが出たのですがどうすればいいでしょうか

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +1

      ご質問ありがとうございます😊
      動画内で解説しているのと全く同じディレクトリ構成になっているかどうかと、__init__.pyがちゃんと正しい場所に作成できているかどうか、ご確認いただけますでしょうか?

  • @kakerusekai2785
    @kakerusekai2785 2 ปีที่แล้ว

    いつも楽しく拝見させてもらっています。とても嚙み砕いて説明してくださり、分かりやすく、丁寧なので勉強になります。
    ところで、一つ質問させてもらいたいのですが、実は、youtubeの中で説明されているように、モジュールファイルを作成し、
    同じ階層にフォルダを作成して、テストモジュール、並びに__init__.pyファイルも作成して、pytestを実行すると、毎回の様に
    ModuleNotFoundError: No module named 'インポートをしたいファイルがあるモジュールフォルダ'が表示されてしまいます。
    色々、自分でネットでググって調べてみたのですが、対応ができません。何が原因かお分かりになりますでしょうか?

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      ご質問有難うございます😊
      以下の点についてご確認ください。
      1. 動画の 7:21 あたりのPyCharmの左側にフォルダの構成が映っていますが、このような構成になっていますか?
      2. import文にタイピングミスはありませんか?
      3. pytestコマンドは適切なディレクトリで実行されていますか?
      間違っている可能性として、パッと思いつくのはこのくらいですね🤔

    • @kakerusekai2785
      @kakerusekai2785 2 ปีที่แล้ว

      @@pythonvtuber9917
      素早い対応で有難く思います。確かに、その辺は問題がないか、きちんと対処してみたのですが、うまくいかないようです。
      もうしばらく、自分で頑張って対応してみます。無事に解決しましたら、連絡を差し上げます、ありがとうございました。

    • @kakerusekai2785
      @kakerusekai2785 2 ปีที่แล้ว

      @@pythonvtuber9917
      色々、試行錯誤をしながらやっていると、解決できました。
      ありがとうございました。今後とも、素晴らしい動画を期待しています。
      本当に分かりやすい動画ばかりで嬉しいです。今後も楽しみにしています。

  • @splwtr
    @splwtr 2 ปีที่แล้ว

    モックが理解できないです。多言語でも同じかと思います。
    クラスの継承を重ねたものをテストするのは、戻り値は何を返すか想定するには
    コードを読むしかないんですよね、テストコードが無いのは。前任開発者とか大変ですw
    今、Pythonの勉強をしてますが、CanvasとFrameを使用するものを趣味で作ってます。
    どちらもmainloopがあるんで、統合する方法に四苦八苦してます。
    Canvasの方のmainlooopは、スレッドで動かして、Frameの方は、実のmainloopに
    tkininter は、Tcl/Tk のPython版と思いますが、イベントの統合の仕方の解説をリクエストします。
    ネットで探しても、Canvas はCanvasだけの解説。Frameも。
    イベントの統合方法の解説ありましtら教えてくださ。

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      コメントありがとうございます!
      またご要望もいただき、ありがとうございます😊
      ちなみに、イベントの「統合」とは具体的にどのようなことを指しておりますでしょうか?

    • @splwtr
      @splwtr 2 ปีที่แล้ว

      @@pythonvtuber9917 ご返答ありがとう御座います😀
      初心者です。
      やりたいこと:スクロールするリスト表示のアプリを作っています。
      各リストは同じ物で1行に、「写真(JPEG)を貼り付けたボタン(以下、ボタン)」と「テキスト」です。
      現状:このリストを複数表示させるとスクロールはできますが、ボタンの写真が表示されず、ボタンの押下反応もないです。ボタンを写真にせず文字表示にすると反応はあります。
      やってみたこと:
      ー写真を貼り付けたボタンのmainloopを動かすと写真は表示されますが、ここで止まってしまい、スクロールも何もできなくなります。
      ー上述ボタンのmainloopをスレッドにしてみましたが、写真は表示されないです。(やりかた間違えてると思ってます)
      現在、ここでどうすればよいか試行錯誤中です。
      以上、よろしくお願いします。

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว +1

      リスト表示やスレッドの問題というより、画像を貼り付けたボタンの押下がうまく動いてない気がしますね🤔
      とりあえず単体で画像をクリックした後にPython側で処理を受け取る部分だけ実装して、うまくいくか試すのが良いかな?と思いました!
      今後Tkinterの課題解決動画なども検討してみますね😉

    • @splwtr
      @splwtr 2 ปีที่แล้ว

      @@pythonvtuber9917 早速のご返事ありがとう御座います。
      推測される通りです。
      画像のボタンにせず、テキストのボタンにするとボタンは押せます。
      後からconfig(image=XXX)でできるかもやってみようと思います。

  • @sun-taro
    @sun-taro 2 ปีที่แล้ว

    pytestのインストール方法が分かりません

    • @pythonvtuber9917
      @pythonvtuber9917  2 ปีที่แล้ว

      ご質問ありがとうございます!
      4:12らへん説明しているので、ご確認ください😉

    • @sun-taro
      @sun-taro 2 ปีที่แล้ว

      @@pythonvtuber9917
      色々調べてみたら出来ました!
      ありがとうございます