最近因为项目需要,所以之前不怎么常做的测试也轮到我头上来了,于是根据需要,就有了这么一个简单的功能:定时自动测试,顾名思义,每天固定的时间,测试网站,所以不可能说我每天设定个闹钟起来手动操作,当然是完全由计算机来自动定时执行。功能并不是很复杂,我做了个简单的Demo来留作备注。以下是测试类的代码:
UnitTest1.cs(单元测试的方法都写在这里面,我这里简单的举了一个登陆的例子)
using Microsoft.VisualStudio.TestTools.UnitTesting;
using WatiN.Core;
namespace TestProject
{
/// <summary>
/// Summary description for UnitTest1
/// </summary>
[TestClass]
public partial class UnitTest1
{
[TestMethod]
public void AutoTest()
{
string url = "http://localhost:2765/TestWeb/Default.aspx";//设定测试的网址
var ie = new IE();//声明一个IE对象
ie.GoTo(url);//打开网址
ie.WaitForComplete();//等待自动填充表单
ie.TextField(Find.ById("uName")).Value = "Eric";//自动填充用户名
ie.TextField(Find.ById("uPwd")).Value = "Tang";//自动填充密码
ie.Button(Find.ById("subBtn")).Click();
ie.WaitForComplete();
string result = ie.Span(Find.ById("loginResult")).InnerHtml;//获取登陆结果
Assert.IsTrue(result == "true");//如果结果为true,则登陆成功!
ie.Close();//最后测试完成之后关闭IE浏览器
}
}
}
然后,自动点击Submit按钮,跳转到登陆提示页,获取登陆结果
如下所示:
OK,如果span中的内容为“true”,那么就说明我们成功登陆了。到此,测试项目就完成了,接下来我们要把测试项目生成一下,然后写个简单的小脚本AutoTest.cmd,以便于每天能够自动执行。
AutoTest.cmd
@echo off
set DLLPath=F:\EricTang_SlefProject\DoNet\Test\TestProject-EBPP.dll
set resultPath=F:\EricTang_SlefProject\DoNet\Test\TestResults
rd F:\EricTang_SlefProject\DoNet\Test\TestResults /s/q
"C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\MSTest.exe" /testcontainer:"%DLLPath%" /test:AutoTest
pause
然后要将测试项目的bin\Debug\目录下的dll等文件都拷贝出来,放在一个文件夹中,例如F:\EricTang_SlefProject\DoNet\Test,同时,cmd脚本的DLLPath变量也要指定到测试项目的DLL文件,文件列表如下图所示:
双击其中的AutoTest.cmd脚本,就会立刻执行测试,测试完成,自动关闭浏览器,效果如下:
OK,这样儿一个可以直接执行测试项目的脚本就完成了,接下来的工作就不用废话了,只需要在计划任务中添加该脚本并指定定期执行的时间。或者也可以参考我的C#操作计划任务这篇文章,加以改进运用,同时,也可以在测试结束之后发送邮件,发送邮件的代码网上一抓一大把,在此不在赘述。