西田@大阪です pythonのテストフレームワークであるpytestの主だった使い方をまとめてみました 今回の記事で利用したバージョンは以下です Python: 3.6.5 pytest: 3.8.0 freezegun: 0.3.10 テスト対象 ファイルはtestから始まるファイルが対象になります

はじめにExUnit.startで:ex_unitを起動します。通常のMixプロジェクトでは、プロジェクト作成時に生成されるtest/test_helper.exsでこれが行われるので、自分で書くことは少ないでしょう。 次にテストモジュールを定義します。モジュール名は重複しなければ何でもOKですが、ファイル名は_test.exsで終わる必要があるので、これに合わせて、<プロジェクト名>.<テストしたいモジュール名>Testとするのが一般的です。 テストモジュールは、まずuse ExUnit.Caseから始めます。この中で、いくつかのモジュール属性の設定やテストに使う関数のimportなどをしています。async: trueオプションは、他のテストモジュールと並行に走らせるかを指定しています。Mockを使う場合など、特定のケース以外はtrueでよいと思います。デフォルトはfalseです。 テ
テストを書くときにprotected,privateなプロパティを書き換えたいときがあります。 でも、なかなかそらで書けないのです。僕は。 だから、自分への戒めとして書いておきます。 (そもそもアクセスできないテストってどうなの、、、ってのはありますが、、、) リフレクションはこう!こう書く!!覚えろ!自分!! $reflection = new \ReflectionClass($Mailer); $property = $reflection->getProperty('oauth'); $property->setAccessible(true); $property->setValue($Mailer, true); $this->assertTrue($Mailer->getOAuth());
やりたい事 前回の、単体テストで開始時にモックサーバを起動し、終了時に停止する - Qiita では json-server をライブラリとして使ってサーバを起動・終了する手順を書きました。 json-server はコマンドラインからの実行もできるので、そちらを利用した書き方です。 前回の記事は、mocha 単体では実行できたのですが mocha-webpack を使った時に、うまく動かなかったので、そういう場合の回避策として調べました。 どうやるか child_process.spawn を使ってコマンドを (background で) 起動し、標準出力への出力内容から起動したかどうかを確認します。 終了は、起動時の PID を記録しておき、それを kill することで実現します。 実装例 import * as child_process from "child_process";
やりたい事 JavaScript の単体テストで、テスト対象のコードがサーバと通信して JSON 形式で受信を受け取る場合、サーバと通信する部分を置き換えてテストコード内部で完結するようにしたい。 しかし、通信する部分をモックで置き換えるのはしたくないので、テスト用に JSON を返すサーバを立てたい、そしてサーバは開始時に起動、終了時に停止させたい。 どうやるか json-server は こんな感じに サーバの実装をすればできる。 json-server は、パスと返る JSON の内容をコードから指定できるので、テストケースに合わせてテストコード内で修正できる。 実装例 var jsonServer = require("json-server"); var assert = require("assert"); var http = require("http"); describ
よくあることですが、PHPUnitでテストを書いている場合、テストケースが増えてくると徐々に実行速度が気になってきます。テストの量が増え、完了するまでの時間が単純に増えていくためです。 そんなとき、とにかくテストをさっさと終わらせるためのtipsです。 テストする量を減らす ローカルで開発するときは毎回すべてのテストを実行する必要はないかと思います。そんなときはテストする量自体を減らしましょう。 filter や group オプションを使用し特定のテストだけ実行すると、実行テストの総量が減り完了までの時間は短くなります。 参考: PHPUnit で指定したのテストのみを実行する また、PhpStormなどのエディタの機能を使えば特定のテストを実行することがエディタ上で可能になります。 参考: Testing with PHPUnit カバレッジを計測しない filter や group
var gulp = require("gulp"); var browser = require("browser-sync").create(); var concat = require("gulp-concat"); var uglify = require("gulp-uglify"); var Server = require("karma").Server; /** * server setting */ gulp.task("server", function () { browser.init({ server: { baseDir: "./", index: "index.html" } }); }); /** * browser reload */ gulp.task("reload", function () { browser.reload(); }); /**
何かと理由(時間がない || メンテが面倒)をつけて避けがちなユニット試験。 未だ関わる開発現場で全くユニット試験が書かれていないことも多い。 とは言え、急な仕様変更に伴うデグレ確認や後々の保守開発を考えれば必須かなと。 PHPでユニット試験といえばPHPUnitが有名。 CakePHP3上でコントローラのユニット試験を動かす時にちょっと詰まりました。 その時のメモ書き程度に残しておきます。 動作環境 PHP7.2 CakePHP3.6.9 MySQL5.7 環境構築 composerのパスを通していること. // CakePHP3初期化(プロジェクトが無い人) composer self-update && composer create-project --prefer-dist cakephp/app xxxx // PHPUnitインストール composer require --
こんな「困った」時の話 「異常時に例外を投げる、正常に完了したらvoidとなる」というようなメソッドがあるとします。 こんな時に、PHPUnitでどのように単体テストを書けばいいでしょうか? PHPUnitでは、1つもassertionがないテストを「Risky」としてマークします。これは賢いのですが、しかし「返り値をとれないメソッド」=assertionを置けないテストケースについてRiskyになってしまうのが困る・・・と悩んでいました。 結論: @doesNotPerformAssertions を使えそう テストケースのアノテーションに @doesNotPerformAssertions を入れると、「これはリスキーじゃないぞ」という事を示すことができそうです。 以下、「こうやって対処してきた」「これからは@doesNotPerformAssertionsを使いたいかも」という話をし
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く