今天主要做自动化测技术支持工作,最近一直在做接口自动化这块,前些天在研究将web页面模拟http进行接口自动化,这周杭州那边想测试WCF服务,所以这两天一直在探索。遇到的第一个问题就是服务参数传参序列化的问题,怎么让python这边创建的对象能被WCF识别到。正好在大学的时候也学了WCF,不过一直都没用过,这次算是重温一下,用的都是一些WCF基础。
一、WCF服务准备
1.定义契约Contract
这里IServiceDemo.cs定义了服务契约IServiceDemo,并定义了几个操作契约OperationContract,5个操作契约传的参数不同,用来做测试,同时自定义了两个数据契约DataContract.并在ServiceDemo.svc中实现了上面操作契约。
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; namespace WcfServiceDemo { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。 [ServiceContract] public interface IServiceDemo { [OperationContract] string GetSimpleData(string value); [OperationContract] List<Item> GetListData(List<Item> items); [OperationContract] Item GetModelData(Item item); [OperationContract] Dictionary<string,string> GetDicData(Dictionary<string,string> dic); [OperationContract] Dictionary<string, Dictionary<string,int>[]> GetDicDicData(Dictionary<string, Dictionary<string, int>[]> dic); } [DataContract] public class ItemMenu { [DataMember] public string Name { get; set; } [DataMember] public string Value { get; set; } } [DataContract] public class Item { [DataMember] public List<ItemMenu> ItemMenus { get; set; } } }