首页 > 解决方案 > 如何检查,在 Get 方法中,特定数据在 restsharp 中是否匹配

问题描述

伙计,我是 RestSharp 的新手,因为我在 API 上进行自动化。如何知道特定数据存在于 Get 方法中。在我的 API 中,存在 3 个对象。这些是分页,数据和信息。现在我想检查一下,名字值在“数据”对象中是否匹配。

我使用了 JsonDeserializer 概念。但我无法移动“数据”对象。

var client = new RestClient("https://ecovon.com/search?keyword=marketing&page=1");
var request = new RestRequest(Method.GET);

//Header values.
request.AddHeader("Content-Type", "application/json");

//Execute script
IRestResponse restResponse = client.Execute(request);
var deserialize = new JsonDeserializer();
var output = deserialize.Deserialize<Dictionary<string, string>>(restResponse);

var result = output["firstname"];
Assert.AreEqual(result, "Matt", "Name not matched.");

标签: c#asp.net-web-apirestsharp

解决方案


简单的答案是你没有。

当您对 API 进行单元测试时,您有很多选择。

  1. 你可以添加一些测试数据然后使用它,但是当多人触发自动化测试然后数据被更改时会变得很棘手,所以我不是这种方法的忠实粉丝。

  2. 在你测试任何东西之前,首先你创建你需要的数据并针对它进行断言。完成后,您只需删除您创建的数据,这样它就不会污染现有的被测系统。

想象一下这个场景:

你有一个用户,名字是Frank,第二个名字是Johnson。您还需要一个唯一的电子邮件地址才能创建它。

你想测试一个返回全名Frank Johnson的方法。

您可以使用 guid@something.com 格式的 guid 作为用户名,您可以在其中自己指定 GUID。它将是独一无二的,因此该部分被覆盖。您设置其余数据。这是使用 API 的端点完成的。

创建用户后,您就开始调用您实际想要测试的端点,使用您知道的东西来识别正确的用户,可能是他们的电子邮件、一个 ID,无论您拥有什么。

您执行断言,验证一切是否正确,最后使用另一个端点删除您刚刚创建的所有这些数据。例如,这甚至可以是您未在生产中公开的端点,或者您对其进行保护以使其不能被其他任何人使用。

因此,您的端点测试现在涉及调用 3 个端点:

  • 创建测试数据
  • 调用被测端点并执行断言
  • 删除测试数据

这需要更多的工作,但值得,它让您确信一切都按应有的方式运行。

对于要测试的任何其他内容,您都遵循此方法,因此在您的情况下创建您需要的内容,根据您的测试场景,您将知道您应该获得多少数据以及它应该是什么样子,然后您就完成了。


推荐阅读