タグ

testingに関するHHRのブックマーク (44)

  • [python] まだmockで消耗してるの?mockを理解するための3つのポイント

    隣の席の人がテスト強化週間とか抜かしていたので自分もちゃんと理解するために なるべくわかりやすく まとめてみようと思います。 この記事は 2015 tech-yuruyuru アドベントカレンダー - 15日目の記事です。 2015 tech-yuruyuru アドベントカレンダー (2015/12/01 00:00〜)# 2015 #tech-yuruyuru アドベントカレンダー #tech-yuruyuru のアドベントカレンダーです。 テーマは特に決まっていません。好きなことを書いてください。 * 参加したい日の参加枠に参加登録してください * 2 日以上参加したい場合は、フィードで宣言してください ## カレンダー 1. @pjxiao: VPC のプライベートサブネットについて解説 2. @pjxiao: mDNS を使いローカルマシン内の仮想環境に接続する 3. @pjxia

    [python] まだmockで消耗してるの?mockを理解するための3つのポイント
    HHR
    HHR 2023/08/15
    MagicMockの構造 mock.patch('__main__.hoge')な使い方 時刻のpatch
  • Python(pytest)でテスト書くならfixture,conftest,parametrizeを理解すると世界が一気に変わる

    Python(pytest)でテスト書くならfixture,conftest,parametrizeを理解すると世界が一気に変わる 概要 Pythonのテストライブラリといえばpytestが一般的です。 Python標準のuniitestとは異なり、クラスベースではなく関数ベースでテストコードを記述することが一般的ですが、fixture,conftest,parametrizeを理解すると一気に世界が変わり、テスト体験が圧倒的に向上するため、これらの実装方法を紹介します。 リポジトリ 記事の説明に使用しているサンプルのテスト実装は、以下のリポジトリです。 想定読者 PythonやGitの基的な使い方を理解している方を想定しているため、基的な用語説明は省略しています。 環境 エンジニアの利用率の高いmacOSを前提として説明していますので、その他の環境の方は随時読み替えてください。 開

    Python(pytest)でテスト書くならfixture,conftest,parametrizeを理解すると世界が一気に変わる
  • pytest, mock, patchについて整理したい

    pytest、unittest.mock.patchらへんでハマっていたのでメモ。 整理したかったこと 同じ機能で、書き方が何種類もあること 引数の使い分け 注: このページでは同じものを別の名前で指しているかもしれないです(例:package, module, library という単語は同じものを指すことがある) テストモジュールについて unittest ... Pythonビルトインのテストpackage pytest ... 3rd partyのテストpackage。unittestよりよく使われていて主流らしい unittestをそのまま使える importしなくても使える(pytest.xxxを使わないとき) mock について オブジェクト(何でも)を自由に置き換えるもの unittest.mock ... unittestのモジュール pytest-mock ... py

    pytest, mock, patchについて整理したい
    HHR
    HHR 2023/08/08
    pytestはunittestをそのまま使えるのでunittest.mockがよく使われている
  • How to mock nested / multiple layers of return objects in python

    I'm currently struggling to find a good way of mocking multiple layers / nested return values. In other words, I want to return a magic mock that in turn returns a magic mock with it's own set return values. I'm finding this relatively cumbersome and am looking for a more elegant and maintainable solution. I'm trying to test the following code efficiently. the URL returns a json string that needs

    How to mock nested / multiple layers of return objects in python
    HHR
    HHR 2023/08/08
    mockオブジェクトはmock先が何であれ構造化されない。callする順番にmock_urlopen.return_value.read.return_value.decode.return_valueのようにreturn指定する
  • What is the difference between mock.patch.object() and mock.patch()

    I am trying to understand the difference between these two approaches of mocking a method. Could someone please help distinguish them? For this example, I use the passlib library. from passlib.context import CryptContext from unittest import mock with mock.patch.object(CryptContext, 'verify', return_value=True) as foo1: mycc = CryptContext(schemes='bcrypt_sha256') mypass = mycc.encrypt('test') ass

    What is the difference between mock.patch.object() and mock.patch()
    HHR
    HHR 2023/08/08
    mockのpatch.object()とmock.patch()の違い。あまり考えなくても良さそう
  • Mocking time in Java 8's java.time API

    HHR
    HHR 2023/04/06
    Clock
  • Override Java System.currentTimeMillis for testing time sensitive code

    Is there a way, either in code or with JVM arguments, to override the current time, as presented via System.currentTimeMillis, other than manually changing the system clock on the host machine? A little background: We have a system that runs a number of accounting jobs that revolve much of their logic around the current date (ie 1st of the month, 1st of the year, etc) Unfortunately, a lot of the l

    Override Java System.currentTimeMillis for testing time sensitive code
    HHR
    HHR 2023/04/06
    Clock
  • java.time.Clockで現在時刻を扱うUT - Qiita

    現在時刻を扱うUT辛くないですか? Date and Time API(JSR-310)のJavadoc見ていたら使えそうなクラスを見つけました! その名もjava.time.Clock。 ちょっとJavadoc引用。 タイムゾーンを使用して現在の時点、日付および時間へのアクセスを提供するクロックです。 このクラスのインスタンスは、現在の時点を検索するために使用されます。現在の時点は、保存済みタイムゾーンを使用して現在の日時を検索することで解釈できます。そのためクロックは、System.currentTimeMillis()およびTimeZone.getDefault()のかわりに使用できます。 Clockの使用は任意です。すべての主要な日付/時間クラスには、デフォルト・タイムゾーンのシステム・クロックを使用するnow()ファクトリ・メソッドも用意されています。この抽象の主要目的は、代替ク

    java.time.Clockで現在時刻を扱うUT - Qiita
  • mockito で static メソッドの mock を使ったテストをしたい - おおくまねこ

    はじめに お久しぶりです。 最近、いろいろバタバタしていてここの更新もすすんでませんでしたが、 アウトプットの機会を継続できたらと思い、また何か書いていこうとしています。 4月に異動になってしまい、Java を使わない部署になったのに、なぜかスポット対応でJavaを書いていました。 今日はその時に見つけた内容の話になります。 内容としては「mockito と使った、static メソッドを mock 化する方法」です。 static メソッドの mock 化するモチベーション mock 化したいのは、おもにユニットテストを書く際に、依存モジュールを好きな値をかえす、mock/stub を使ってテストしたいとなると思います。 Java で実装を行う場合、自分たちで static メソッドを作る場合もあると思います。 自分たちで作らない場合でも外部モジュールで実装された static メソッド

    mockito で static メソッドの mock を使ったテストをしたい - おおくまねこ
    HHR
    HHR 2022/09/13
    mockito-inline
  • mockito でコンストラクターの mock を使ったテストをしたい - おおくまねこ

    はじめに 今回は「mockito を使ったコンストラクターを mock 化する方法」について記載します。 Java でユニットテストを記述する際に利用するモックライブラリ mockito の使い方のひとつの説明です。 以前、以下で「mockito を使った static メソッドを mock 化する方法」について書きましたが、 その派生、コンストラクターを mock 化する場合の内容になります。 keyno63.hatenablog.com コンストラクタを mock 化する際のモチベーションについて この機能を使うモチベーション、つまり使いどころとしては、 メソッド内でクラスインスタンスを生成しているものがあり、 それをJUnit でテストする場合です。*1 具体的な例をコードで記述すると、以下のようなメソッドを想定しています。 public Object method(String v

    mockito でコンストラクターの mock を使ったテストをしたい - おおくまねこ
    HHR
    HHR 2022/09/13
    mockito-inline
  • 心地良すぎるモックライブラリ Mockito 〜その1〜 - A Memorandum

    EasyMockとの違い Eclipse での利用に際して org.mockito.Mockito モックの利用と妥当性検証 スタブメソッドの定義 引数の照合 メソッド呼び出しの妥当性検証 voidメソッドから例外を返却 API的に EasyMock と大きな違いはありませんが、使用感としては格段に心地良い Mockito。 [:W150] 家 http://mockito.org/ のドキュメント(というかJavaDoc)をベースにメモ。 EasyMockとの違い Mockito では record モードと replay モードを切り替える必要がない Mockito で作成するモックは常に、EasyMock で言う NiceMock となる スタブメソッドの妥当性検証が常にオプション扱い 大きくは以上となります。具体的に、EasyMock では import static org.e

    心地良すぎるモックライブラリ Mockito 〜その1〜 - A Memorandum
  • TDDは死んだ。テスティングよ栄えよ。 by DHH | 2014-04-24 - やっとむでぽん

    DHHの"TDD is dead. Long live testing."を、訳してみました。 翻訳 やっとむ By David Heinemeier Hansson on April 23, 2014 著 David Heinemeier Hansson 2014年4月23日 Test-first fundamentalism is like abstinence-only sex ed: An unrealistic, ineffective morality campaign for self-loathing and shaming. テストファースト原理主義は禁欲のみを唱えた性教育のようなものだ。つまり、自己嫌悪に陥っている人に向けた、非現実的で効果のない、道徳教育のようなものだ。 It didn't start out like that. When I first disco

    TDDは死んだ。テスティングよ栄えよ。 by DHH | 2014-04-24 - やっとむでぽん
    HHR
    HHR 2018/10/21
    ざっくり言うと、unit test至上主義はやめよ、ってこと
  • Maven2のテストフェーズについてあれこれ - とある誰かの覚え書き

    はじめに Maven2でテストフェーズ(test phase)を実行するといろいろなおまけが付いてきます。今回はこのテストフェーズについて調べてみました。 テストフェーズの実行方法 テストフェーズは、次の5通りの方法で実行することができます。 testフェーズを実行する maven-surefire-test-pluginを実行する maven-surefire-report-pluginを実行する maven-surefire-test-pluginをpom.xmlのbuildに組み込む maven-surefire-report-pluginをpom.xmlのreportingに組み込む 以下、それぞれの方法についてみていきます。 testフェーズを実行する テストフェーズは以下のコマンドで明示的に呼び出すことができます。 mvn test出力イメージはこんな感じです。 [INFO]

    Maven2のテストフェーズについてあれこれ - とある誰かの覚え書き
    HHR
    HHR 2018/08/09
    surefire plugin
  • Spring BootでAutowiredされるクラスをMockitoでモックする - Qiita

    はじめに Spring Bootで@Controller @Service @Repository@Componentといったアノテーションを付与したクラスはBeanとしてSpringのDIコンテナに登録され、利用するクラス側で@Autowiredアノテーションを当該クラスに付与することで、Springが生成したオブジェクトを利用できます。 ところで、Mockitoを使って先述のアノテーションを付与したクラスをモックしてテストしたい場合、通常の@Mockや@Spyではなく、Spring Bootが提供する@MockBeanもしくは@SpyBeanアノテーションを当該クラスに付与します。 これらのアノテーションを利用することで、Autowiredされるクラスの状態をモックオブジェクトで制御することができるようになり、単体テストや下位層が未完成あるいはテストで呼び出されるべきではない場合などに

    Spring BootでAutowiredされるクラスをMockitoでモックする - Qiita
    HHR
    HHR 2018/07/20
    “Mockitoを使って先述のアノテーションを付与したクラスをモックしてテストしたい場合、通常の@Mock@Spyではなく、Spring Bootが提供する@MockBeanもしくは@SpyBeanアノテーションを当該クラスに付与”
  • ChefSpecの始め方 - Qiita

    はじめに Chefのテストはserverspec - Homeとかtest-kitchen/test-kitchenとかCucumber-chefとか色々あります。 ただ、これら3つは実際に仮想マシンを動かしてそれに対してクックブックを実行してテストするものです(たぶん)。 nodeの値変えたら設定ファイルの値がちゃんと変わるかとか、not_ifが期待通り動くかとかレシピのロジックのテストをするなら、ChefSpecが実行が速いし向いてるんじゃないかと思います。 ChefSpecのインストール Gemfileに以下を追加 ChefSpec 3.0からknife cookbookコマンドでspecの雛形を作る機能が別gemになったので、knife-specを追加する。(詳細)

    ChefSpecの始め方 - Qiita
  • レガシーコードの触り方 / Working Effectively with Legacy Code

    オープンセミナー2017@岡山

    レガシーコードの触り方 / Working Effectively with Legacy Code
    HHR
    HHR 2017/06/15
  • Spring boot 1.4 testing with Spock - Qiita

    はじめに Spring Boot 1.4が今年の7月末にリリースされましたね。 こちらの記事にも書いてある通り、Spring Boot 1.4ではテストが非常に改善されました! となると、Spockでテストを書きたくなりますよね!? ここではSpring Boot 1.4でSpockを使用したテスト方法について解説したいと思います。(2016/12/27現在) 概要 ここで解説するのは以下の3つです。 Spring Initializrでプロジェクト作成 Groovy&Spock化 Spockでテストケースの作成 1. Spring Initializrでプロジェクト作成 Spring Initializrにアクセスして、必要なモジュールを入れたアプリケーションを作成しましょう。 私は以下のモジュールを入れました。 Web DevTools Lombok 2. Groovy&Spock化

    Spring boot 1.4 testing with Spock - Qiita
  • Spring BootでJUnitテスト - ぺーぺーSEのブログ

    Spring Bootのテストについて書く。 spring-boot-starter-testを使用するとコントローラのJUnitテストも可能になる。 テストやコードインスペクションレポートのMaven設定は以下を参照。 blog.pepese.com テスト対象アプリ 以下の記事で紹介した入門アプリをテスト対象とする。 blog.pepese.com テストの作成 以下を作成する。 com.pepese.sample.service.HelloServiceTest コントローラへDIされるサービスクラスのテスト com.pepese.sample.controller.HelloControllerTest コントローラのテスト サービスのテスト(com.pepese.sample.service.HelloServiceTest) ポイントは以下。 @RunWith(SpringRu

    Spring BootでJUnitテスト - ぺーぺーSEのブログ
  • Maven のビルドでテストをスキップする - tm_senda の技術ノート

    Maven を利用する場合、テストをスキップするのは来であれば推奨されないわけですが、 テストに時間がかかりすぎるので普段はテストをスキップしたい スケジュールに追われてテストコードのメンテナンスが追いつかない!けどビルドは通したい…*1 などの事情によりテストをスキップしたい場面に出くわすことがあります。 まれに、"rm -rf src/test/java" というワイルドな手法も見かけるのですが… テストをスキップするには… テストの実行のみをスキップする mvn install -DskipTests=true テストコードのコンパイル、およびテストの実行をスキップする mvn install -Dmaven.test.skip=true テストをスキップするには上記を使い分けます。 後者の場合、jar:test-jar(org.apache.maven.plugins:maven

    Maven のビルドでテストをスキップする - tm_senda の技術ノート
    HHR
    HHR 2017/03/19
    -DskipTests=trueと-Dmaven.test.skip=true
  • Spring-Boot の @RestController の単体テストを記述する - Qiita

    最新(1.4.x)の Spring Boot ではこの方法を使う必要は無くなっています。 @WebMvcTest と @MockBean を使用するのが良いかと思います。 最近、Spring-Boot を触っています。 Spring-Boot 自体の使い方は、Google 先生に聞けばだいたい教えてくれるので、@RestController なコントローラの単体テストについて書いておきます。 使用した Spring-Boot のバージョンは 1.2.1.RELEASE になります。 「単体テスト」といえば対象クラスの動作に対するテストの事かと思いますが、コントローラの場合はフレームワークの設定と動作もある程度加味しないとテストから漏れてしまう箇所が多くなる or 結合テスト(手動/自動問わず)で細かな部分までテストすることになってしまうかと思います。 Spring-Boot には spri

    Spring-Boot の @RestController の単体テストを記述する - Qiita
    HHR
    HHR 2016/11/28
    v1.2.1までの内容 v1.4.xではやらないリスト