使用WatiN验证二进制内容

时间:2010-12-14 21:10:44

标签: asp.net unit-testing nunit watin

我正在测试一个提供一些二进制(即非HTML)内容的网站。有些链接直接提供自定义图像,其他链接自定义PDF。

我正在WatiN和NUnit中构建测试用例。想知道是否有办法,使用WatiN来加载页面,然后获取该页面的byte []内容。

目前,我只是推出一个WebClient来获取内容,而不是通过WatiN,但是我的测试套件中的代码更加未经测试。

其他人这样做并有建议吗?

1 个答案:

答案 0 :(得分:1)

可能更容易跳过Watin并使用HttpWebRequest直接从C#中获取内容(在您的测试或测试库中)。

K Scott Allen在博客文章中使用HttpWebrequest获取二进制数据:http://odetocode.com/Blogs/scott/archive/2004/10/05/webrequest-and-binary-data.aspx

如果您事先不知道链接目标(例如动态生成的URL),则使用Watin获取链接,然后使用HttpWebRequest获取内容。

从上面的K Scott Allen's blog post引用,应该为你提供你在

之后的字节[]
byte[] result;
byte[] buffer = new byte[4096];

WebRequest wr = WebRequest.Create(someUrl);

using(WebResponse response = wr.GetResponse())
{
   using(Stream responseStream = response.GetResponseStream())
   {
      using(MemoryStream memoryStream = new MemoryStream())
      {
         int count = 0;
         do
         {
            count = responseStream.Read(buffer, 0, buffer.Length);
            memoryStream.Write(buffer, 0, count);
         } while(count != 0);
         result = memoryStream.ToArray();
      }
   }
}