タグ

pythonとtestingに関するsh19910711のブックマーク (27)

  • X-RayはpytestとFlameGraphを組み合わせると便利 - Qiita

    この記事を3行で AWS X-Rayをpytestで使うと便利 関数の通過や例外の発生をassertでテストできる X-Rayの可視化にFlameGraphを使えば、各関数の実行時間が分かりやすい この記事を書く理由 AWS X-Rayが便利なので、AWS環境へのデプロイの前でも使える使い方を紹介したい。 完成後の挙動 この記事で作成する単体テストを、Pytestで実行すると、 単体テストが吐き出したX-Rayのデータをもとに、下のようなグラフがローカルのPC上に作成されます。 FlameGraphと呼ばれているグラフです。炎のように下から上に伸びていくことが特徴です。 グラフの縦の方向は関数の呼び出しを表しています。 たとえばこのグラフなら、下から上に読んで、lambda_handler関数がnetwork_process関数を呼び出して、そこからgoogle.co.jpへのリクエストを

    X-RayはpytestとFlameGraphを組み合わせると便利 - Qiita
    sh19910711
    sh19910711 2024/05/16
    "AWS X-Rayをpytestで使うと便利 / 実行された関数が想定通りか、例外の内容が想定通りか、といった試験が書きやすく、分かりやすい / 実装を変えながらパフォーマンスを比較 + 異常系のパフォーマンスを計測"
  • AWS Step Functionsの単体テスト実施手順 | takemikami's note

    AWS Step Functionsの単体テストをローカル環境で実施したい場合、 AWSのドキュメントに「AWS Step Functions Local」を使った方法が記載されており、 AWS Step Functionsから呼び出す処理(Lamda,SQSなど)をモックする方法もあります。 ステートマシンのローカルテスト | docs.aws.amazon.com https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local.html モックサービス統合の使用 | ステートマシンのローカルテスト | docs.aws.amazon.com https://docs.aws.amazon.com/ja_jp/step-functions/latest/dg/sfn-local-test-sm-exec.html

    AWS Step Functionsの単体テスト実施手順 | takemikami's note
    sh19910711
    sh19910711 2024/05/09
    "Step Functionsの単体テスト: ドキュメントに「AWS Step Functions Local」を使った方法が記載 + 呼び出す処理(Lamda,SQSなど)をモックする方法もあり / 繰り返しの実施をしやすいようにpytestに組み込む"
  • Hypothesisとpytestを使ってDjangoのユニットテストを書く - 何かを書き留める何か

    Hypothesisとは何か、プロパティベーステストとは何か Hypothesisは、Python向けのプロパティベーステストのライブラリである。 プロパティベーステストは、生成された多数の入力データに対してプロパティ(性質)が満たされるかどうかをテストする手法である。 HaskellのQuickCheckライブラリが初出で、現在は各プログラミング言語に移植されている。 従来のユニットテストは、ある程度固定したテストデータを指定してテストを行っていた。 その際、境界値分析などで妥当なパラメータを決定していた。 しかし、境界値分析が必ず通用するとは限らないし、人間が行う以上、ミスも発生する。 プロパティベーステストはデータを固定する代わりにそのデータが満たすプロパティを指定してテストを行う。 実際のテストケースはHypothesisがプロパティを満たすパラメータを決めて生成してくれる。 人力

    Hypothesisとpytestを使ってDjangoのユニットテストを書く - 何かを書き留める何か
    sh19910711
    sh19910711 2024/04/19
    "プロパティベーステスト: 生成された多数の入力データに対してプロパティ(性質)が満たされるかどうか + HaskellのQuickCheckライブラリが初出 / 『ロバストPython』でHypothesisの存在を知った"
  • LT「データまえしょりすとのためのpytest入門」@みんなのPython勉強会#46

    Bokeh & Dash Cytoscape 〜 Pythonによるインタラクティブなネットワーク可視化ライブラリの比較 / PyConJP2021

    LT「データまえしょりすとのためのpytest入門」@みんなのPython勉強会#46
    sh19910711
    sh19910711 2022/06/19
    2019 / "pandas.testingモジュール / pandasのテストコード自体がサンプルとして参考になる / 泥臭い前処理のコードは、仕様も泥臭くなりやすい / PyCon US 2019のトーク: テストにおけるデータ系特有の問題に触れ"
  • Software Design連載 2021年9月号 「テストが無い」からの脱却 - MonotaRO Tech Blog

    こんにちは、鈴木です。 「テストが無い」状態を脱却しました。 「いつの時代かよ!」と突っ込まれるかもしれませんが、モノタロウは創業から 20 年ほど EC をやっています。昨日書いたコードも、15 年前に書いたコードも、元気にビジネスを支えています。 記事ではモノタロウの EC を支える API の話をします。「テストが無い」状態がスタートラインでした。そこから、CI を導入して、ローカル開発環境の整備して、テストコードを書いて、リリースマネジメントを導入しました。 目新しいことは書きません。長寿の大規模システムであっても、愚直に数年取り組むことで、「前進できる!」「変えられる!」という実例を書きます。 ※記事の初出は、 Software Design2021年9月号「Pythonモダン化計画(第2回)」になります。第1回の記事は「Software Design連載 2021年8月号

    Software Design連載 2021年9月号 「テストが無い」からの脱却 - MonotaRO Tech Blog
    sh19910711
    sh19910711 2021/09/30
    シンプルで良いな / "「抽象構文木(AST)が変わらない変更はテスト不要」という基準に落ち着きました / (Python) astorというサードパーティライブラリを利用し、ソースファイルごとにASTのハッシュ値を出力"
  • Pythonのテストのパラメータ化にはparameterizedを使うと楽(unittest/pytest/nose/nose2対応) - Blank File

    Pythonでテストをパラメータ化した時の書き方を unittest と pytest を使った場合で紹介し、最後にそれらで使えるparameterizedというライブラリを紹介します。 ちなみに私はpytestよりもunittest派です。 はじめに テストを書いていると値が違うだけのケースを複数確認したくなる時があります。 例えば、1 + 1 = 2, 2 + 3 = 5, 32 + (-32) = 0, …などのようなケースです。 これをすべて別のテストケースとして書き下すのは面倒ですしメンテも大変なことになるので、テストフレームワークは大抵こんなテストが簡単にできる仕組みを提供しています。 今回はPythonでよく使われているunittest(標準ライブラリ)とpytestでこれらのテストの書き方を紹介します。 なんでいまさら?と思われそうですが、pytestはともかくunitte

    Pythonのテストのパラメータ化にはparameterizedを使うと楽(unittest/pytest/nose/nose2対応) - Blank File
  • Pythonで、unittest.mock.patchを使ってデコレータを差し替える - メモ的な思考的な

    同僚と話している中で、unittest.mock.patchを使ったデコレータの差し替えに関する話題が出ました。 そういえばデコレータは差し替えたことがなかったため、試してみたことをメモします。 なお、「テストファイル群に、デコレータを差し替える/差し替えないものが混在している場合」で使った方法は強引な気がします。そのため、もしより良い方法をご存じであればご指摘ください。 目次 環境 用意したデコレータとプロダクションコード 引数なしのデコレータを差し替える 引数ありのデコレータを差し替える ダミー処理をするデコレータに差し替える デコレータの差し替え有無が混在する複数のテストファイルを同時に実行する場合 ソースコード 環境 Python 3.6.1 pytest 3.0.7 テストランナーとして使用 用意したデコレータとプロダクションコード デコレータとは、関数に処理を追加するためのシン

    Pythonで、unittest.mock.patchを使ってデコレータを差し替える - メモ的な思考的な
  • GitHub - malexer/pytest-spark: pytest plugin to run the tests with support of pyspark

  • PySpark Coding Practices: Lessons Learned

  • pytest ヘビー🐍ユーザーへの第一歩 - エムスリーテックブログ

    蛇行区間にはレールの内側に脱線防止ガードが設置される(文とは関係ありません)。 こんにちは、エムスリー・エンジニアリングG・基盤開発チーム小です。 pytest は Python のユニットテストのデファクトスタンダードです。エムスリーでも顧客向けレポートや機械学習Python&pytest をヘビー🐍1に使っています。 ですが、実は pytest は、意外と入門のハードルが高い。と言うのも、pytest の公式ドキュメント が、fixtureのような新概念も登場する上、詳細で分量が多いからです(しかも英語)。初心者にいきなり読ませると挫折する可能性大です 2。 そこで、とりあえず使い始めるのに必要そうな情報を日語でまとめました。 pytest ってどんなライブラリ? unittest や nose から簡単に移行できる 書き方がシンプル fixture モックもできる プラグイ

    pytest ヘビー🐍ユーザーへの第一歩 - エムスリーテックブログ
  • Python: doctest を書いてみよう - CUBE SUGAR CONTAINER

    今回は Python が標準で提供しているテスト機構の一つである doctest について書いてみる。 doctest というのは docstring という Python のドキュメンテーション機構を使って一緒にテストもしちゃおうという発想の代物。 docstring については以前にもこのブログで詳しく書いたことがある。 blog.amedama.jp docstring のおさらい ひとまず docstring のおさらいから入ろう。 docstring はモジュールや関数などを解説するための特殊なコメント。 例えば次の FizzBuzz を実装した関数 fizzbuzz() に対して docstring を書いてみることにしよう。 # -*- coding: utf-8 -*- def fizzbuzz(n): if n % 3 == 0 and n % 5 == 0: retur

    Python: doctest を書いてみよう - CUBE SUGAR CONTAINER
  • Boto3のMockのMotoに未実装のAPIを追加してみた - Qiita

    きっかけ AWS Lambdaのユニットテストって皆さんどのように実装しているのでしょうか? 私は前回の記事でも少し登場していたMotoを使用しています。テストケースにデコレータを付けるだけでBoto3をモック化してくれるのでとても便利なのですが、先日ついに恐れていたことが起きてしまいました。 cognito-idpのcreate_group()を使用した関数をテストしたら「残念だったな、そのAPIはまだ未実装だぜ!」と言われてしまったのです。(口調は私の想像) こんな時には(通常)のMockでどうにかするのが良いと思うのですが、私のPython力不足でMockの使い方がよく分からず、足掻きに足掻いた結果、Boto3のMockのMotoの関数をMock化することでどうにか解決できたので、その方法をまとめておきます。 問題のテストケース テストケースと言うよりもエラーが出た処理なのですが、単

    Boto3のMockのMotoに未実装のAPIを追加してみた - Qiita
  • Pythonメモ : mimesisでテストデータを生成する - もた日記

    mimesis インストール 使い方 作成可能なデータ種別 JSONスキーマを指定して出力 mimesis github.com mimesisというというPythonライブラリを使用するとテストデータを簡単に生成することができるので試してみる。 特徴としては、 fakerなどの他のライブラリに比べて高速 様々なデータを生成可能 Python標準ライブラリ以外を必要としないのでシンプル とのこと。 ここにfakerと速度を比較するコードがあったので試したところ確かに高速だった(コードのfrom elizabethはfrom mimesisに変更。名前が変わったのだろうか)。 $ python comp.py [0.87593889s] generate_elizabeth(250000) -> 'Generated 250000' [130.84236121s] generate_fake

    Pythonメモ : mimesisでテストデータを生成する - もた日記
  • FEATURE: run pytest in Jupyter notebooks · Issue #2268 · pytest-dev/pytest

  • Jupyter Notebookを単体テストやマニュアル作成ツールとして使う - Qiita

    Jupyter Notebook便利ですね、皆さん使ってますか? コードの実装や確認にも便利なのですが、工夫をすれば単体テストやマニュアル制作まで出来てしまう優れものです。 この記事では、従来の使い方とは少し違う便利な使い方を紹介します。 単体テストに使う Jupyterは結果を確認しながらコードを書けるので便利ですよね。 その確認作業をそのまま単体テストに使えるとしたら便利だと思いませんか? pytest-ipynbを使えばできます! pytest-ipynbは、pipで簡単にインストールできます。 このモジュールは、テストライブラリpy.testの拡張なので、py.testのインストールも必要です。 使い方は簡単でテストを入れているディレクトリにtest*.ipynbの名前のNotebookを放り込むだけです。 あとはそのセルにテスト内容を以下のように書けばOKです。 マニュアルの機能

    Jupyter Notebookを単体テストやマニュアル作成ツールとして使う - Qiita
  • Luigi+pytestによるテスト再実行の制御 - Qiita

    AdventarのPython Advent Calendar 2015 25日目の記事です。 はじめに 記事ではLuigiを用いたジョブパイプライン構築の簡単な実例として、Pytestのテスト再実行について記述する。 Luigiとは LuigiはPython製のジョブパイプライン構築ツールである。Luigiを用いることで、ジョブパイプライン構築に必要な以下の事柄をPythonコードで表現することができる。 タスクの実行 タスク間の依存関係 タスク実行結果の保存 HadoopやSparkのジョブ実行、データベースからの/へのデータロードなど、それなりに時間がかかるタスクを構成要素としたジョブパイプラインの構築をメインターゲットとしているようで、それらのツールと連携するためのモジュールはデフォルトでサポートされている(http://luigi.readthedocs.org/en/stab

    Luigi+pytestによるテスト再実行の制御 - Qiita
  • factory_boyで楽々テストデータ生成

    Python Advent Calendar 2013 の14日目です。 今日は、テストコードを書くときに便利なモジュール factory_boy を紹介します。 なお、この記事のサンプルコードは以下の環境で動作確認しています。 Python 3.3.3(2.7でも動くように書いています)factory_boy 2.2.1SQLAlchemy 0.8.4SQLite3インストール#インストールは、pipコマンド一発でできます: pip install factory-boy 今回はSQLAlchemyも使うので、以下のコマンドでインストールしておきましょう: pip install sqlalchemy 基的な使い方#以下のコードをjojo.py という名前で保存してください: import factory from factory.alchemy import SQLAlchemyMo

  • Python でテスト - Qiita

    doctest docstring 内に書ける。凡例として使える。 使い方 doctest を import し、docstring 内で以下のように書き、doctest.testmod() を呼ぶ。実行する際は python ${ファイル名}.py -v とする。 サンプルコード # -*- coding: utf-8 -*- import doctest def twice(n): """ 引数を 2 倍して返す関数 >>> twice(8) 16 >>> twice(1850923) 3701846 """ return n * 2 if __name__ == "__main__": doctest.testmod()

    Python でテスト - Qiita
    sh19910711
    sh19910711 2014/07/13
    doctest, unittest
  • Pythonデバッガ(pdb)とテスト(pytest)についてのメモ - c-bata web

    はじめに 今までテストを書くどころかデバッガを使ったことがなかったのですが、id:Kesinさんの↓の記事を読んで、このままではマズイと思ったので勉強しました。 研究のプログラミングにおける悲劇を無くすためのGitとテスト デバッガ Pythonには標準でpdbというデバッガが付いてるらしい。 pdbPython デバッガ Pythonのpdbモジュールでデバッグする こちらによると、 使い方はいろいろあるみたいだけど、とりあえず set_trace は便利なのですぐにでも使ってみるべき。pdb.set_trace() でデバッグ用の対話シェルが実行される。 とのこと。他のサイトでもプログラムの気になる所にpdb.set_trace()を埋め込んで使っていました。 import pdb pdb.set_trace() 使い方 PyCon JP 2012 hands-on セッション/

    Pythonデバッガ(pdb)とテスト(pytest)についてのメモ - c-bata web
  • Unit Test vs Functional TestそしてClean Code - masayang's diary

    Agile2008でもらったゴムバンドを未だに手首につけている。確かBob Martinだったと思うが、テスト駆動開発と「Clean Code」の関係について熱く語っていた年だ。 メソッドは短く。 メソッドが実現することは一つ。 あるメソッドのテストに色々と条件を設定しているのなら、それはClean Codeではない。 だが我々はその基を簡単に忘れてしまう。色々とテストのための道具が揃ってきたせいもあろう。基を忘れて一つのメソッドに色々と詰め込みすぎるとテストが大変になる。Mockがあっても、だ。Fixture使うのはさらに大変だし、Seleniumとかで入力から何から条件を与えるのはもっと面倒。そしておそらく抜けが発生する。 最近、内職でPython使ったアプリを組んでいるのだが、今回は上記「基」を徹底するようにしている。例えばこんなコードがある。 def nearby(reque

    Unit Test vs Functional TestそしてClean Code - masayang's diary