Tsung实现CSV文件读取

Tsung在读取CSV文件时,读取出来的数据,会出现换行,导致接口发送失败,请问这个改怎么解决

img

高并发测试工具Tsung使用教程

可以借鉴下
https://blog.csdn.net/qq_25231683/article/details/120017718

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
Tsung是一个基于Erlang语言开发的压力测试工具,可以使用它进行并发测试和负载测试。在使用Tsung进行接口测试时,可以使用CSV文件来批量生成参数。

当CSV文件中有换行符时,可能会导致接口发送失败。可以通过以下两种方式来解决问题:

  1. 在CSV文件中使用双引号将参数值包裹起来,以避免出现换行符的影响。例如:

    name,password
    "user1","password1"
    "user2","password2"

  2. 在Tsung配置文件中设置参数分隔符为其他字符,如逗号(,)以外的字符,如分号(;)或者竖线(|)。例如:

其中是用于设置动态变量的标签,sourcetype表示变量来源类型,file表示CSV文件路径,delimiter表示参数分隔符。

以下是使用双引号包裹参数值的Python代码示例:

from tsungpy import Tsung

ts = Tsung("/path/to/tsung.xml")

with ts.config() as config:
    config.clients>
        with config.add('client1') as client:
            client.weight = 1
            client.host = 'localhost'
            client.port = '8080'
            client.type = 'tcp'
            client.send>            
                with client.http("POST", "/login") as http:
                    http.header("Content-type", "application/x-www-form-urlencoded")
                    http.body("name={{ name }}&password={{ password }}")
                    http.synchronous()
                    http.record("true")

            client.recv>
                with client.match("HTTP/1.1 200 OK") as http:
                    pass
    with config.add('load') as load:
        load.arrivalphase("arriving", rate="10", unit="second", duration="60")
        load.thinktime("2")
        load.scheduler type="tsung" scenario="client1" />
ts.run()

其中,http.body中的{{ name }}{{ password }}变量会根据CSV文件中的参数值进行替换,并使用双引号进行包裹。如果CSV文件中没有换行符,则不需要使用双引号进行包裹。
如果我的回答解决了您的问题,请采纳!

引用chatGPT作答,如果你使用的是Tsung作为负载测试工具,并且读取CSV文件时出现了换行符导致接口发送失败的问题,可以尝试以下解决方法:

1.检查CSV文件的格式是否正确。确保每行数据都以逗号分隔,并且没有多余的空格或换行符。

2.在读取CSV文件时,可以使用特定的库或函数来处理换行符。例如,Python中的csv模块可以使用csv.reader函数读取CSV文件,并将其转换为列表。在此过程中,可以指定参数newline=''来忽略换行符。类似地,其他语言也提供了处理CSV文件的库或函数,可以查阅相关文档进行处理。

3.修改CSV文件中的数据,将换行符替换为其他字符,如空格或分号。

4.在Tsung的配置文件中,可以尝试使用string:函数来处理读取的CSV文件数据。例如,在发送HTTP请求时,可以使用string:replace函数将换行符替换为其他字符。

5.如果以上方法都无法解决问题,可以考虑修改接口实现代码,使其能够处理带有换行符的数据。

希望这些解决方法能够帮助你解决问题。