2017-05-18 11 views
1

Jmeterのテストを設定していますが、解決が難しい問題が発生しました。私のJMSポイントツーポイントで、私はテストのためのテストデータを持つCSVファイルを持っているのJMeterコンテンツJmeterでテストするときに空のタグを削除する

enter image description here

にコンテンツセクションに次のように使用しています。すべての変数は、このCSVにその値とともに書き込まれます。たとえば、CoverageNrの値が1の場合、Jmeterはテスト中に「< CoverageNr> 1 </CovereageNr>」という値を持っていない場合は "< CoverageNr> </CovereageNr>"の値を使用します。そしてここに私は持っている問題があります。 CoverageNrは、使用すると空にできません。私が達成したいのは、CoverageNrに値がない場合、タグ「< CoverageNr> </CovereageNr>」がテストに含まれていないことです。私は、タグ全体を構成可能にしなければならないか、またはifコントローラを使用しなければならないと思っています。誰かがこの問題を解決する方法を私にいくつかの洞察力を与えることができますか?

+0

Dmitri TがSOAP/xmlで空の文字列を削除しました。 JMeter - SOAPリクエストの空の要素を削除する )しかし、私はJMS Point-to-Pointテスト用のスクリプトを書く方法を知らない – fasln01

答えて

1

私は次のようにあなたがこれを行うことができGroovy is a new Blackを聞いた:

  1. 「スクリプト」領域に以下のコードを入れてサンプラー
  2. をポイントするためにJMSポイントの子としてJSR223 PreProcessorを追加します。

    import groovy.xml.XmlUtil 
    
    def content = sampler.getContent() 
    
    Node xml = new XmlParser().parseText(content) 
    cleanNode(xml) 
    
    def newContent = XmlUtil.serialize(xml) 
    sampler.setContent(newContent) 
    
    
    boolean cleanNode(Node node) { 
        node.attributes().with { a -> 
         a.findAll { !it.value }.each { a.remove(it.key) } 
        } 
        node.children().with { kids -> 
         kids.findAll { it instanceof Node ? !cleanNode(it) : false } 
           .each { kids.remove(it) } 
        } 
        node.attributes() || node.children() || node.text() 
    } 
    

    デモ:Groovy Remove Empty XML tags

    出典:Remove null attributes and empty children from Node

今後もそれははるかに良いだろうパフォーマンスの面でので、私はBeanShellのからJSR223 Test Elementsへの移行をお勧めします。さらに、Groovyには前述のXML processingのような素晴らしいセクシーな機能がありますので、あなたの人生を楽にしてくれるでしょう。

0

私は上記のコメントに記載された他の質問のおかげで、これらの質問に対するDmitri Tの回答に感謝して問題を解決しました。 BeanShellのプリ・プロセッサを使用すると、スクリプトされた状態でトリックをした:

String data = sampler.getContent(); 
data = data.replaceAll("<CoverageN></CoverageN>",""); 
sampler.setContent(data); 

多分それは他の人のために役に立つことができます。

関連する問題