c# - 如何检查,在 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.");
解决方案
简单的答案是你没有。
当您对 API 进行单元测试时,您有很多选择。
你可以添加一些测试数据然后使用它,但是当多人触发自动化测试然后数据被更改时会变得很棘手,所以我不是这种方法的忠实粉丝。
在你测试任何东西之前,首先你创建你需要的数据并针对它进行断言。完成后,您只需删除您创建的数据,这样它就不会污染现有的被测系统。
想象一下这个场景:
你有一个用户,名字是Frank,第二个名字是Johnson。您还需要一个唯一的电子邮件地址才能创建它。
你想测试一个返回全名Frank Johnson的方法。
您可以使用 guid@something.com 格式的 guid 作为用户名,您可以在其中自己指定 GUID。它将是独一无二的,因此该部分被覆盖。您设置其余数据。这是使用 API 的端点完成的。
创建用户后,您就开始调用您实际想要测试的端点,使用您知道的东西来识别正确的用户,可能是他们的电子邮件、一个 ID,无论您拥有什么。
您执行断言,验证一切是否正确,最后使用另一个端点删除您刚刚创建的所有这些数据。例如,这甚至可以是您未在生产中公开的端点,或者您对其进行保护以使其不能被其他任何人使用。
因此,您的端点测试现在涉及调用 3 个端点:
- 创建测试数据
- 调用被测端点并执行断言
- 删除测试数据
这需要更多的工作,但值得,它让您确信一切都按应有的方式运行。
对于要测试的任何其他内容,您都遵循此方法,因此在您的情况下创建您需要的内容,根据您的测试场景,您将知道您应该获得多少数据以及它应该是什么样子,然后您就完成了。