向服务发布请求,获取响应,验证响应

时间:2014-03-25 19:35:56

标签: c# web-services unit-testing soap automation

我正在寻找一个示例代码,使用C#.net
向Web服务(SOAP)发送请求 获取响应,然后自动验证响应

例:http://www.w3schools.com/webservices/tempconvert.asmx?op=CelsiusToFahrenheit  将celcius数据发送到此Web服务并获得一些响应,然后使用预期值验证此响应。

我希望使用C#nunit框架以编程方式执行此操作 有谁知道如何实现这个目标?

2 个答案:

答案 0 :(得分:0)

Web服务本身应该没有值得测试的逻辑。

您无法轻松测试网络服务电话,也不应该。这是框架的责任。

您的Web服务应该是完成实际工作的类的包装器。然后,您将使用逻辑进行单元测试,而不是Web服务。

在你的例子中,你应该有一个班级负责将华氏温度转换为摄氏温度。执行此操作的公共方法将由​​您的单元测试覆盖。

您调用实际执行转换的终点(例如,.asmx文件中的方法)只会调用上面的代码。

答案 1 :(得分:0)

using System;  
using System.IO;  
using System.Net;  
using System.Text;  
using System.Xml;  
using NUnit.Framework;  


namespace Examples.System.Net  
{  
    public class WebRequestPostExample  
    {  
        public static void Main()  
        {  
String b = "OK";  
            // Create a request using a URL that can receive a post. 


        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("your end point here");  


        request.Headers.Add ("SOAPAction", "some soap action here");  
        request.ContentType = "text/xml;charset=\"utf-8\"";  
        request.Accept = "text/xml";  
        request.Method = "POST";


        // Set the Method property of the request to POST.  
        request.Method = "POST";  
        // Create POST data and convert it to a byte array.  
        string postData = @"<s:Envelope xmlns:s="Som request that you want to send";  

        byte[] byteArray = Encoding.UTF8.GetBytes(postData);  
        request.ContentLength = byteArray.Length;  
        Stream stream = request.GetRequestStream();  


        stream.Write(byteArray, 0, byteArray.Length);  

        int a = 0;  
        stream.Close();  
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();  
        Assert.AreEqual(response.StatusCode, b, "Pass");  


        Console.WriteLine(((HttpWebResponse)response).StatusDescription);