博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
.net软件自动化测试笔记(API-2)
阅读量:5091 次
发布时间:2019-06-13

本文共 4314 字,大约阅读时间需要 14 分钟。

1.9获得测试运行时间
如何获得测试运行的总时间
设计:DateTime.Now属性记录测试开始运行时间,以及测试结束时间,用一个TimeSpan对象计算本次运行的总时间

 

DateTime starTime = DateTime.Now;            while ((line=sr.ReadLine())!=null)            {                //运行测试            }            DateTime endTime = DateTime.Now;            TimeSpan testTime  = endTime - starTime;            Console.WriteLine("Test use time="+testTime);
View Code

1.10处理输入为空或期望值为空的情况

如何验证待测程序的API方法能否正确的处理传给它的null参数
设计:使用一个特殊的字符串标记来表示测试用例数据文件的null值,在测试套件添加相应的处理逻辑,把null标记转换成null输入值

public static double ArithmeticMean(params int[] vals)        {            if(vals==null)            {                return 0.0;            }            double sum = 0.0;            foreach (int v in vals )            {                sum += v;                return (double) (sum/vals.Length);            }        }
View Code

 

1.11处理“方法抛出异常”的情况

如何测试一个抛出异常的方法

设计:在测试用例数据文件嵌入一个特殊的字符串标记,用来表示应该有一个异常抛出,把待调用的待测方法放到一个try块里,可以捕获异常

*******

不要把那些调用不抛出异常的待测方法的代码放到try块里,因为如有异常抛出的话,你会得到pass的结果

如下测试数据:

004:GeometricMean:1 2 4 8 16 32:6.6569

005:GeometricMean:0 0 0 0:Exception
006:GeometricMean:2 4 8:4.0000

MathLib.Methods m=new Methods();                if (tokens[3] == "Exception")                {                    try                    {                        actual = m.GeometriMean(input);                    }                    catch (Exception ex)                    {                        Console.WriteLine(caseID+"Pass");                        continue;                    }                    Console.WriteLine(caseID+"*Fail* no exception throw" );                }

如果找到“Exception”输入值,就转到try块里执行GeometricMean();如果没有找到,程序转到catch块,并打印出结果,然后执行continu,进入下一关测试;

 

 

1.12处理输入参数为空字符串的情况

如何测试传给待测API方法的参数为空字符串的情况

设计:使用一个特殊字符串标记来表示测试用例文件中的空字符串,并在测试套件中加入相应的逻辑处理分支

001:SubString:put:computer:true

002:SubString:xyz:computer:flase
003:SubString:emptystring:computer:true(emptystring作为特殊标记字符串:空字符串)

string ags;                if (tokens[2]=="emptystring")                {                    ags = " ";                }                else                {                    ags = tokens[2];                }

 

1.13在测试用例失败时发送警告邮件

如何编写程序让测试套件在测试用例失败的时候发送邮件信息

设计:使用System.Web.Mail命名空间的MailMessage类创建一个MailMessage对象,然后对这个对象提供To和Subject等属性,把测试用例失败详细信息添加到Body属性

 

else                    {                                             Console.WriteLine("*Fail*.Sending e-mail");                        try                        {                            MailMessage mail=new MailMessage();                            mail.From = "Test Automation Harness";                            mail.To = "excamp@mail.com";//通知邮箱地址                            mail.Subject = "Test Case Failure";//主题                            mail.Priority = MailPriority.High();                            mail.BodyEncoding = System.Text.Encoding.ASCII;//编码格式                            mail.BodyFormat = MailFormat.Html;                            mail.Body = "Test case"+caseID+"fail";//邮件内容                            SmtpMail.SmtpServer = "127.0.0.1";                            SmtpMail.Send(mail);                        }                        catch (Exception ex)                        {                                                        Console.WriteLine("Fatal error sending mail:"+ex.Message);                        }                    }

 

 

1.14自动运行测试套件

如何让测试套件自动运行

设计:1)好几个轻量级自动化测试套件需要运行,可以创建一个.bat文件,在这个文件里加上运行他们的命令;

      2)用c#写一个主测试套件(master harness),让主测试套件来协调并调用其他自动化测试套件,

        使用System.Diagnostics.Process命名空间的Start()方法来编写代码用于调用其他测试套件

eg:1)

@echo off

echo Starting test automation sequence
echo.
d:\xxx\xxx\xxx.exe
d:\xxx\xxx\xxx.exe
d:\xxx\xxx\xxx.exe
echo.
echo Test autonmation sequence complete

 

如果测试套件没有把测试结果记录到外部文件

@echo off

echo Starting test automation sequence
echo.
d:\xxx\xxx\xxx.exe > d:\xxx\xxx.Result1.txt
d:\xxx\xxx\xxx.exe > d:\xxx\xxx.Result2.txt
d:\xxx\xxx\xxx.exe > d:\xxx\xxx.Result3.txt
echo.
echo Test autonmation sequence complete

 

 

eg2):

public void MasterStart()        {            Console.WriteLine("Starting automation sequence\n");            Process.Start("d:\\xxx\\xxx\\xxx.exe");            Process.Start("d:\\xxx\\xxx\\xxx.exe");            Process.Start("d:\\xxx\\xxx\\xxx.exe");            Console.WriteLine("\n Test automation sequence complete \n");        }

 

转载于:https://www.cnblogs.com/cloud-test/p/3517908.html

你可能感兴趣的文章
asp.net mvc 5框架揭秘(文摘)
查看>>
ABP框架系列之二十三:(EF-MySql-Integration-EF-MySql-集成)
查看>>
杭州电子科技大学2018年自命题科目考试大纲(数据结构与组成原理)
查看>>
centos 7 下使用jexus 配置ASP.NET Core
查看>>
MySQL数据库 DML 数据操作语言
查看>>
跟我学习dubbo-使用Maven构建Dubbo服务的可执行jar包(4)
查看>>
SPCAMLEditor使用系列(1)--利用SPCAMLEditor,10分钟打造一个在线视频播放库
查看>>
ios开发 <AppName>-Prefix.pch文件的用法详解
查看>>
小鸡啄米问题求解
查看>>
13-调试Dockerfile
查看>>
python3.4中自定义数组类(即重写数组类)
查看>>
【线性代数】3-2:零空间(Nullspace)
查看>>
Solr 03 - 解读Solr的schema.xml文件 (Solr的模式设计与优化)
查看>>
打靶射击[递归]
查看>>
QT5连接Mysql
查看>>
hadoop随手笔记
查看>>
【转】UML类图与类的关系详解
查看>>
单源最短路(bellman-ford算法+dijkstra算法)+任意两点最短路(floyd-warshall算法)...
查看>>
链表基本操作
查看>>
关于多线程的一个例子(UI实时显示)
查看>>