我使用JMeters使用基本的CRUD方法自动对我们的数据库进行API测试。创建记录后,我尝试执行3种不同类型的读取(想想CRRRUD)。 :)
阅读1 - 按ID检索 HTTP(GET)基本URL附加了保存的记录ID。
http..../crud/tableName/${newRecordId}
返回
阅读2 - 按字段类型检索,没有定义的值 HTTP(POST)基本URL扩展为"搜索"作为结束。定义了一个键("名称")没有值。
http..../crud/tableName/search
Parameter Name = name
Value = {undefined}
返回表中其字段(" name")不为空的所有记录。
阅读3 - 按字段类型检索定义的值 HTTP(POST)基本URL扩展为"搜索"作为结束。使用创建请求期间生成的值定义密钥(" name")。
http..../crud/tableName/search
Parameter Name = name
Value = Metropolis
这也会返回表中的所有记录,而不仅仅是名称为Metropolis的记录。
在将Key | Value对定义为" name | Metropolis"时,使用REST客户端(例如,邮递员,高级REST客户端等)时,此第3次检索正常工作。所以我必须在JMeter中找到我想要的东西。
非常感谢任何见解!
答案 0 :(得分:1)
只有一个正确的答案:使用嗅探器工具(即Wireshark)比较REST客户端和JMeter发送的内容,检测差异并相应地配置JMeter。
只是一个猜测:假设你提到“API”一个“REST”字样,你可能需要将其作为JSON传递:
{"name":"Metropolis"}
作为单个参数值
或以格式化方式(如果服务器检查Content-Length和/或希望请求格式正确)
您可能还需要添加HTTP Header Manager才能发送Content-Type
标头,其值为application/json
。有关详细信息,请参阅Testing SOAP/REST Web Services Using JMeter指南。