【问题标题】:Creating xml list with multiple items( in one -SOAP/XML message) from csv files using Jmeter使用 Jmeter 从 csv 文件创建包含多个项目的 xml 列表(在一个 -SOAP/XML 消息中)
【发布时间】:2016-12-12 14:34:54
【问题描述】:

我在线程组中使用 jmeter -SOAP/XML-RPC(从 csv 文件中读取多行) 我正在使用 2 个不同的 csv 文件(例如:A、B)。

soap 包含带有列表 inside(<person list>) 的 xml,我需要此列表包含多个实例,但它只创建一个实例(<person list> 中的 <person>)。

我希望它创建多个实例,

即对于文件 A 中的每一行,它应该从包含相同 <group_id> 的文件 B 中读取几行(两个文件都包含“group_id” - 显然具有不同的名称:group_id_a,group_id_b),(具有相同 @ 的行文件B中的987654327@按顺序排列)。

SOAP 中的 xml 示例:

<group_name>${group_name_a}</group_name>
 <group_id>${group_id_a}</group_id>

    <person_list>
      <person>
        <name>${name_b}</name>
        <age>${age_b}</age>
        <city>${city_b}</city>
      </person>
   </person_list>

即,我需要结果类似于:

<group_name>"math"</group_name>
 <group_id>1234</group_id>

    <person_list>
      <person>
        <name>phil</name>
        <age>23</age>
        <city>buenos aires{city_b}</city>
      </person>

        <person>
        <name>liam</name>
        <age>21</age>
        <city>madrid{city_b}</city>
      </person>

        <person>
        <name>brenda</name>
        <age>25</age>
        <city>bariloche</city>
      </person>

        <person>
        <name>martin</name>
        <age>27</age>
        <city>miami</city>
      </person>
   </person_list>

因为现在结果是这样的:

<group_name>"math"</group_name>
 <group_id>1234</group_id>

    <person_list>
       <person>
        <name>phil</name>
        <age>23</age>
        <city>buenos aires{city_b}</city>
      </person>
  </person_list>

我做了一些 csv 示例(带有一些无意义的变量) File A

File B

所以结果应该是 3 个soap/xml 请求

【问题讨论】:

    标签: java xml csv soap jmeter


    【解决方案1】:

    我建议使用JSR223 PreProcessorGroovy 语言动态生成请求正文。 JSR223 PreProcessor 提供对sampler 对象的读/写访问,这很可能是HTTPSamplerProxy,因此一旦生成正确的 XML 有效负载,您应该能够将其传递给 HTTP 请求采样器,例如:

    import org.apache.commons.io.FileUtils;
    
    List<String> csvfile1 = FileUtils.readLines(new File("/path/to/file1"), StandardCharsets.UTF_8); 
    List<String> csvfile2 = FileUtils.readLines(new File("/path/to/file2"), StandardCharsets.UTF_8);
    
    //for each line in file 1
    
       // for each groupid from file 2
    
            // append <person> entry
    
    sampler.addNonEncodedArgument("","your XML data","");
    sampler.setPostBodyRaw(true);
    

    有关 JMeter 中 Groovy 脚本的概述,请参阅 Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For! 文章。如果对 Groovy 不太满意 - 用 CSV 文件中的几行代码更新您的问题,以便我们建议相关代码。

    【讨论】:

    • 如何动态创建肥皂?我应该创建一个字符串,然后以某种方式从中创建一个肥皂吗?我还需要创建几个肥皂,所以每个请求在列表中都有不同数量的项目。 (我用一些 csv 文件的例子更新了我的问题)谢谢
    猜你喜欢
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    相关资源
    最近更新 更多