金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 数据驱动测试,AOP组件ASPectCore简单使用

数据驱动测试,AOP组件ASPectCore简单使用

发布时间:2019-12-15 23:56编辑:编程浏览(138)

    介绍:

    (一)   前言

    这几年始于接触matplotlib,

    AspectCore是.NET标准的基于AOP的跨平台框架【github解释】。首要支撑:对地点拦截器,信赖注入集成,Web应用程序,数据申明等的主干支撑。

    经过行使数据驱动测验,实现对输入值和预期结果的参数化。(比方:输入数据和预期结果能够直接读取Excel文书档案的数码)

    1.先是安装matplotlib库和其依赖的片段其余库,比方:numpy,scipy和pandas等

    采用实例:

    率先安装dll:

    Install-Package AspectCore.Core

    引用完dll就足以运用了,我们来成立基本的拍卖类:ErrorCommandAttribute

    介绍就隐蔽了,理论本身也知晓的相当少,直接上代码:

    图片 1图片 2

     class ErrorCommandAttribute : AbstractInterceptorAttribute
        {
            string _mess;
            public ErrorCommandAttribute(string methon)
            {
                _mess = methon;
            }
            /// <summary>
            /// 每个被拦截的方法中执行
            /// </summary>
            /// <param name="context"></param>
            /// <param name="next"></param>
            /// <returns></returns>
            public override async Task Invoke(AspectContext context, AspectDelegate next)
            {
                try
                {
                    Console.WriteLine("AddAsync方法开始前");
                    await next(context); // 执行被拦截的方法
                }
                catch (Exception)
                {
                    Console.WriteLine("AddAsync方法出错");
                    try
                    {
                        //Type[] mytypes = Assembly.GetExecutingAssembly().GetTypes();
                        Type type= typeof(User);//user 是类
                        var methom = Activator.CreateInstance(type);//反射创建类
                        MethodInfo methodinfo = type.GetMethod(_mess);//获取方法 _mess参数是自定义字符串为方法名称
                        methodinfo.Invoke(methom, null);//运行方法
                    }
                    catch (Exception ex)
                    {
    
                        throw;
                    }
                    throw;
                }
                finally
                {
                    Console.WriteLine("AddAsync方法结束");
                }
            }
        }
    

    View Code

    只简轻易单介绍下方法的款型:Invoke

    该措施是持续AbstractInterceptorAttribute类之后必得兑现得类;

    接下来try:是在章程实践此前实施;全体大家在检查测量检验方法初步早先要想做一些操作能够写在那间

    catch:唯有在检查测量试验的主意现身至极才会实行;这里是检查实验方法出至极了,须求做的操作,

    finally:都会进行

    我们再来看一下主意类:user

    图片 3图片 4

     public class User
        {
            [ErrorCommand("Error1")]
            public virtual async Task<int> AddAsync()
            {
                Console.WriteLine("开始方法:AddAsync");
                throw new Exception("出错了");
                return 0;
            }
            public async Task<int> Error1()
            {
                Console.WriteLine("开始方法:Error1");
                return 1;
            }
        }
    

    View Code

    很扎眼大家写的特色类只供给在急需检查测试的法门方面加性格就好了。那Ritter别注意正是,必要加脾性的章程必需是虚方法,也正是必得加virtual 修饰。否则不会被调用。

    最终看一下什么使用情势:

    图片 5图片 6

    static void Main(string[] args)
            {
                Console.WriteLine("开始程序");
                //User user = new User();
                //user.AddAsync();
                ProxyGeneratorBuilder proxyGeneratorBuilder = new ProxyGeneratorBuilder();
                using (IProxyGenerator proxyGenerator = proxyGeneratorBuilder.Build())
                {
                    User p = proxyGenerator.CreateClassProxy<User>();
                    p.AddAsync();
                }
    
                Console.ReadLine();
            }
    

    View Code

    与健康的运用类格局看出来了:大家new User类的时候不是思想的主意,必得使用组件的CreateClassProxy方法;

    (二)   ddt

    2.方始开展简易的编码职业,并在PyCharm中运作,现身如下错误:

    2018-06-23:

    应用ddt实行多少驱动测验,ddt库能够将测量试验中的变量参数化。使用ddt的时候,在测量试验类上选择@ddt装饰符,在测量检验方法上接收@data装饰符。@data装饰符将参数作为测量检验数据,参数能够是单个值、列表、元组、字典。对于列表和元组,供给用@unpack装饰符把列表和元组深入分析成五个参数。

    Traceback (most recent call last):
      File "J:/MyGit/pythonTest/GetTegeather/test06.py", line 4, in <module>
        import matplotlib.pyplot as plt
      File "C:UsersAdministratorAppDataLocalProgramsPythonPython36-32libsite-packagesmatplotlibpyplot.py", line 115, in <module>
        _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
      File "C:UsersAdministratorAppDataLocalProgramsPythonPython36-32libsite-packagesmatplotlibbackends__init__.py", line 62, in pylab_setup
        [backend_name], 0)
      File "J:softwarePyCharm 2017.3.1helperspycharm_matplotlib_backendbackend_interagg.py", line 17, in <module>
        verbose = matplotlib.verbose
    AttributeError: module 'matplotlib' has no attribute 'verbose'
    

    改良拦截器方法:

    阻止方法从钦定项目扩张为公家措施,自定义类型,那样就足以单独提抽出来,不用每一个体系写二个类,能够自动获取到项目,然后能够重复使用:

     public override async Task Invoke(AspectContext context, AspectDelegate next)
            {
                try
                {
                    Console.WriteLine("AddAsync方法开始前");
                    await next(context); // 执行被拦截的方法
                }
                catch (Exception)
                {
                    Console.WriteLine("AddAsync方法出错");
                    //重复调用示例
                    ProxyGeneratorBuilder proxyGeneratorBuilder = new ProxyGeneratorBuilder();
                    using (IProxyGenerator proxyGenerator = proxyGeneratorBuilder.Build())
                    {
                        var baseClass = context.Proxy;
                        foreach (var item in baseClass.GetType().GetMethods())
                        {
                            if (item.Name.ToString() == _mess)
                            {
                                MethodInfo methodinfo = baseClass.GetType().GetMethod(_mess);
                                methodinfo.Invoke(baseClass, null);
                            }
                        }
                    }
    
                    throw;
                }
                finally
                {
                    Console.WriteLine("AddAsync方法结束");
                }
            }
    

     

    运用上面的通令安装ddt库

    缓慢解决步骤如下:

    风流倜傥类别目录:

    微服务系列小说首要介绍微服务所使用到的片段本领和意气风发部分才能演示:

    • 微服务——微服务的牵线和目录
    • 微服务——【Consul】服务意识在windows下轻易利用(生龙活虎)
    • 微服务——【polly】微服务故障管理库(二)
    • 微服务——动态代理AspectCore的使用(三) 
    • 微服务——网关Ocelot+Consul实现集群轮询(四)

    pip install ddt

    前提:

    (三)   通过Excel获取数据

    1.导入准确版本的matplotlib库

    读取Excel文件,须要接纳xlrd库。

    2.代码最后调用matplotlibku中pyplot.show(卡塔尔国方法

    安装xlrd的库

    3,无别的低端错误

    本文由金沙国际官网发布于编程,转载请注明出处:数据驱动测试,AOP组件ASPectCore简单使用

    关键词:

上一篇:没有了

下一篇:没有了