2017-10-26 3 views
1

私はSoup 'JDBC Request'を使ってdb結果をチェックします。私は一般的Soup ui jdbcカスタムパラメータ定義

PARAM = $ {ステップ名#要求PARAM}などのパラメータ(複数可)を使用し、これは特定PARAMのために非常に有用である sql as select * from db where param = :param で使用します。しかし、私がコンマ分割したparam(例えば1000,10001,10003)を使用しようとすると、SQLクエリが最初に実行されます。

つまり、IDと値1000,10001,10003 ID = $ {ステップ名#IDs} としてJDBCパラメータを作成し、sqlとしてSQLクエリを作成します。 select * from db where id in (:IDs)カンマ区切りのパラメータの最初のレコードのみを取得します。あなたが複数の値を使用してクエリを送信することができる方法がある。ここ image enter image description here

+0

値の保存方法をスクリーンショットで表示できますか? – Rao

+0

IDは数字フィールドですか?またはテキスト/ varchar型? – Rao

+0

私は写真を追加しようとしましたが、私のスコアはenoghではないと思っています – erata

答えて

1

:結果 は、私はのように、前のステップ要求のparamからスープUIパラメータを取得 で選択したSQLをコンマ分割JDBCパラメータを使用する方法を疑問に思いますin節。

  • また、あなたが${#TestCase#IDS}
  • と同じように使用することができ、残りのリクエストで
  • (あなたが質問で述べたようにカンマで区切られた)、たとえば、テストケースレベルのカスタムプロパティを追加しIDSし、必要に応じて価値を提供jdbcリクエスト・テスト・ステップでは、問合せを空のままにします。それは問題ではありません。groovyスクリプトqueryからオーバーライドされました。
  • jdbcリクエストテストステップの前にgroovyスクリプトテストステップを追加し、複数の値(必要に応じて動的)を持つ計算クエリを設定する以下のスクリプトを追加しますin句。

Groovy Script:インラインコメントに従ってください。

import groovy.text.SimpleTemplateEngine 

//Edit the jdbc test step name if required 
def nextStep = 'Compare with db results' 

//Edit query if required, but not ids variable below as that is used in binding 
def query = 'select * from job where id in ($ids)' 
def binding = [ids: context.testCase.getPropertyValue('IDS')] 
def step = context.testCase.testSteps[nextStep] 
def template = new SimpleTemplateEngine().createTemplate(query).make(binding) 

log.info "updated query : ${template.toString()}" 

//Set the query to jdbc step 
step.jdbcRequestTestStepConfig.query = template.toString() 

テストケースを実行すると、groovyスクリプトのステップでjdbc requestにクエリが設定されます。

注:jdbcテストステップが開いている場合は、それを閉じてから再度開いて、更新されたクエリを確認してください。

+0

ありがとうございます。私はグルーヴィーで綴りを使用していません。私はそれについて少し調べます – erata

+0

'binding'は' query'ステートメントの下で見ることができる変数です。ちなみに、質問のおかげで、APIのドキュメント(以前のようなことはしていない)を探して、このスクリプトを思いついて、答えが出るまでに時間がかかることを知っていなければなりませんでした。 – Rao

関連する問題