在开发Web API的过程中,测试是不可或缺的一环。为了提高测试效率,创建了一个通用的Windows Forms工具,旨在简化测试流程。这个工具可以避免每次测试新控制器时都需要添加一组按钮的繁琐操作。只需要将控制器方法的“装饰”(或路由属性)添加到组合框或文本文件中。运行工具时,可以加载文本文件或从组合框中选择要测试的URI。工具会根据选定的URI确定需要添加的参数,并显示(最多四个)文本框,以便输入要传递的参数值。然后,工具会构建要发送到Web API服务器的URI。
虽然会将工具的代码添加到本文中,但不会在这里展示,因为知道其中一些代码可能不够优雅,许多人可以对其进行优化,使其更加“高效”。分享这个工具的原因是它对来说工作得很好,所以也将提供.exe文件作为下载。本文的目的是指导如何使用这个工具。
在将参数数量从4增加到10之后,替换了原始的VisiblizeCandidateArgs()
方法,使用了以下代码:
private void VisiblizeCandidateArgs(bool visiblize)
{
const int CANDIDATE_COUNT = 10;
for (int i = 1; i <= CANDIDATE_COUNT; i++)
{
Control lbl = GetControlByName(string.Format("labelArg{0}", i));
lbl.Visible = visiblize;
}
for (int i = 1; i <= CANDIDATE_COUNT; i++)
{
Control txtbx = GetControlByName(string.Format("textBoxArg{0}", i));
txtbx.Visible = visiblize;
if (!visiblize)
{
txtbx.Text = string.Empty;
}
}
}
这段代码通过循环来控制标签和文本框的可见性,从而简化了参数的显示和隐藏。
现在,将引导如何使用这个工具。实际上,在表单的控件上标了数字,以指示应该按照哪些步骤来使用这个工具。
首先运行工具,会看到一个非常引人注目的界面(效果可能因人而异):
在这里,可以看到应用程序的基础URI在步骤0(输入基础URI)中!这不是自恋,因为它只是一个“活生生”的例子(“它活了!”)——可以(也应该)根据要测试的REST服务更改URI。
点击“1) 从文件加载路由属性”按钮来执行此操作(首先,必须有这样的文件,或者,如果下载了代码,可以将想要测试的URI添加到组合框的Items属性中)。
加载的文本文件可能包含如下内容:
[Route("api/SQLServerPOC/Count")]
[Route("api/SQLServerPOC/GetAll")]
[Route("api/SQLServerPOC/{ID:int}")]
[Route("api/SQLServerPOC/GetByFullName/{FName}/{MName}/{LName}")]
[Route("api/SQLServerPOC/GetByLastName/{LName}")]
[Route("api/SQLServerPOC/GetByStateOrProvince/{StateOrProvince}")]
[Route("api/SQLServerPOC/GetByZip/{PostalCode}")]
[Route("api/SQLServerPOC/GetByCountry/{Country}")]
现在已经填充了组合框,可以进行步骤2 - 选择一个项目/URI。
“3) 发现属性参数”按钮会检查URI并确定URI中包含的“区分符”(例如“GetAll”或“GetByLName”或其他内容),以及是否有任何参数,如果有,有多少。如果有,它会显示适当数量的标签/文本框对,以便可以输入适当的值作为参数传递到文本框中(标签指示参数的名称和数据类型)。
如果然后点击“5) (重新)构建URI”按钮,它将这样做,将基础URI、控制器名称、“区分符”(如果有的话,例如这个例子中的“GetByFullName”)以及任何参数值附加到一起。不相信?检查一下:
唯一剩下的就是点击“6) 测试URI”按钮。但因为想展示更多的数据,将更改URI以选择状态,然后执行。结果如下:
GetRESTData()
方法(当点击“测试URI”按钮时调用)如果在返回的json中只有一个“记录”时会崩溃。猜测这是因为它不认为一个元素是一个数组,并且它返回了一个JArray。所以,这是一个留给读者的练习:找出一个解决方案。