自動化テストーKarateフレームワーク
Karateフレームワークとは?
Karateは、APIテスト自動化、モック、パフォーマンステスト、さらにはUI自動化を1つの統一されたフレームワークに統合するオープンソースツールです。最も特徴的な点は、テストが言語に依存しない形式で書かれているため、テスターと開発者の両方がアクセスできることです。
Karateフレームワークの主な特徴
APIテスト: KarateはAPIテストに優れており、シンプルで読みやすい形式でテストを書くことができます。
BDD構文: Gherkin構文を使用しており、プログラミングの経験がない人でもテストを理解しやすく、書きやすくなっています。
複数のプロトコル対応: REST、SOAP、GraphQLのAPIテストをサポートしています。
組み込みのアサーション: レスポンスを検証するための多様なアサーションメソッドが用意されています。
パフォーマンステスト: 負荷テストやパフォーマンステストにも使用できます。
Karateを使う利点
学習が簡単: シンタックスが直感的で、プログラミングの経験が少ない人でも簡単に習得できます。
包括的: APIテスト、モック、パフォーマンステストのためのオールインワンのソリューションです。
言語非依存: 特定のプログラミング言語の知識がなくてもテストを書くことができます。
並列実行: テストを並列で実行でき、効率が向上します。
ヒント
クッキー設定
サンプルコードでクッキーを設定しようとしたところ、うまく動作しませんでした。Karateが提供するサンプルコードは以下の通りです。
Scenario: one cookie, and it is sent automatically in the next request
Given path 'search', 'cookies' And cookie foo = 'bar'
When method get Then status 200
And match response == '#[1]'
And match response[0] contains { name: 'foo', value: 'bar' }
インターネットで調査した結果、同じ問題にあっている人はいないようでした。そのため、いくつかの方法を試したところ、以下のコードでうまく動作しました。
Scenario: one cookie, and it is sent automatically in the next request
Given path 'search', 'cookies'
And cookie({name: foo, value :'bar', 'url':'<your_testing_url>'})
When method get Then status 200
And match response == '#[1]'
And match response[0] contains { name: 'foo', value: 'bar' }
クッキーを設定するためには、以下の構文を使う必要があるようです。
クッキー情報にはJSON形式を使用する
各クッキーにはname、value、urlを指定する
キーにハイフン(ダッシュ)などの特殊文字が含まれる場合は、シングルクオートで囲む必要があります。例えば、‘X-LAT’、‘X-LONG’ などです。