利用Spec Flow编写自动化验收测试
作者:网络转载 发布时间:[ 2014/1/27 16:01:44 ] 推荐标签:验收测试 功能测试 自动化测试
接下来,我们需要给每个步骤创建一个方法。该方法将告诉Spec Flow如何执行每一步骤。现在我们只为第一个步骤进行具体步骤定义:“Given I am at the ‘Login’page”。
[Given("I am at the 'Login' page")
public void GivenIAmAtTheLoginPage()
{
// TODO
}
请注意到该方法带有一个属性。该属性将告诉Spec Flow此方法所指代的步骤,每个步骤都有相应的属性。任何一个feature文件中的任意一个以关键字“Given”开始的步骤,紧接着的文本是“I am at the ‘Login’page”的都将会与该方法配对。
现在我们需要为该步骤定义编写具体执行。我们需要告诉WatiN启动浏览器,然后访问程序登录页面。但是在这之前我们需要创建一个浏览器实例。我们也要确保scenario中剩余步骤也将使用该浏览器实例。为了保证scenario中所有步骤使用的是同一个浏览器实例,我们需要为浏览器对象创建一个实例,并将其保存于ScenarioContext字典中。ScenarioContext字典可以用于保存Scenario执行过程中的数据。我们还要创建一个名为WebBrowser的helper类,该类将保存scenario执行时的浏览器实例。
using TechTalk.SpecFlow;
using WatiN.Core;
static class WebBrowser
{
public static IE Current
{
get
{
if(!ScenarioContext.Current.ContainsKey("browser"))
ScenarioContext.Current["browser"] = new IE();
return ScenarioContext.Current["browser"] as IE;
}
}
}
以上的Helper类含有Current属性,它将获取现有浏览器用于目前正在执行的scenario。如果它没在ScenarioContext字典中找到浏览器实例,它将创建一个新浏览器实例,然后将其添加到字典中。这样存在于字典中的浏览器实例又回来了。
后,我们终于可以回去实现我们的步骤定义了。在示例应用中,登录页面存在于http://localhost:9876/authentication/login。我们将通过让当前Scenario浏览器实例定位到该URL以执行我们的步骤定义。我们可以通过浏览器实例回到主页,然后点击登录链接来执行我们的步骤定义,而这在现在看来是简单的。然后,我们将重构我们的步骤定义,这样我们只要有一个步骤定义能解决应用中所有页面跳转问题。
[Given("I am at the 'Login' page")
public void GivenIAmAtTheLoginPage()
{
// Make sure to add the namespace the WebBrowser class is inside
WebBrowser.Current.GoTo("http://localhost:9876/authentication/login");
}
结尾
现在我们已经为尝试执行验收测试做好准备了。虽然我们还没完成所有的步骤定义,但是我们想在进一步深入前,确保各方面都已经正确衔接上。在执行测试之前,我们要保证所有加到工程中的引用都已设置成了Copy Local。如果是通过NuGet添加的WatiN,Interop.SHDocVw DLL则默认将它的Embed Interop属性设置成True。这时,需要确保将Embed Interop属性设置成false,这样才能将它的Copy Local属性设置成True。
同时,我们也需要在单线程的Apartment State中运%
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11