.net软件自动化测试笔记(API-2)
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);
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);
}
}
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[] == "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[]=="emptystring")
{
ags = " ";
}
else
{
ags = tokens[];
}
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");
}
.net软件自动化测试笔记(API-2)的更多相关文章
- .net软件自动化测试笔记(API-1)
.net 软件测试自动化之道 API(Application Programming Interface)包括单元测试(Unit Testing),模块测试(Module Testing),组件测试( ...
- 《软件自动化测试开发-Java和Python测试开发实用指南》出版了
1.关于书中下载链接的问题:出现404,页面不存在 解答:大小写要区分,l和1不能弄错了 2.关于勘误,出现极个别漏子少字错字 解答:后续版本会改进,目前能理解就好了 ---------------- ...
- Atitit Atitit.软件兼容性原理----------API兼容 Qa7
Atitit Atitit.软件兼容性原理----------API兼容 Qa7 1. 兼容性的重要性与反面教材1 2. 提升兼容性的原则2 2.1. What 与how 分离2 2.2. 老人老办法 ...
- 基于ruby的watir自动化测试 笔记二
基于ruby的watir自动化测试 笔记一的补充版,新增加了些特殊的控件捕获方法.还在更新中.... attribute_value 获取当前控件的属性 Value = ie.link(:id=> ...
- 篇4 安卓app自动化测试-Appium API进阶
篇4 安卓app自动化测试-Appium API进阶 --lamecho辣么丑 1.1概要 大家好! 我是lamecho(辣么丑),今天是<安卓app自动化测试& ...
- 用selenium工具做软件自动化测试的面试题及答案
1.selenium中如何判断元素是否存在? 答:isElementPresent 2.selenium中hidden或者是display = none的元素是否可以定位到? 答:不可以定位到 3.s ...
- Vue学习笔记-API调试工具--->国产apipost按装(比postman好按装好用)
一 使用环境: windows 7 64位操作系统 二 Vue学习笔记-API调试工具--->apipost按装 1.下载: https://www.apipost.cn/ (比postm ...
- VectorCAST软件自动化测试方案
VectorCAST 是主要用于对C/C++/Ada程序进行软件自动化测试,并能够在Windows和Linux等多种开发环境下运行.其主要功能包含自动化的单元测试.集 成测试.覆盖率分析.回归测试.代 ...
- 使用Wisdom RESTClient自动化测试REST API,如何取消对返回的body内容的校验?
使用Wisdom RESTClient V1.1 自动化测试API,默认是对返回HTTP状态码和body内容进行校验的. 如果您的API返回body内容是变化的,可以通过设置来取消对body内容的校验 ...
随机推荐
- App开发中甲乙方冲突会闹出啥后果?H5 APP 开发可以改变现状吗
随着各种应用的全面App化,因App而起的合作纠纷也日益增多,其中不乏最终对簿公堂的情形.WeX5(html5开发工具)为您汇总了三个典型的真实案例,方便您体会甲乙方冲突情景. 在围观别人争吵之余,您 ...
- spring data mongodb中,如果对象中的属性不想加入到数据库字段中
spring data mongodb中,如果对象中的属性不想加入到数据库字段中,可加@Transient注解,声明为透明属性 spring data mongodb 官网帮助文档 http://ww ...
- PHP中0、空、null和false的总结
php中很多人还不懂php中 0 , '' , null 和 false 之间的区别,这些区别有时会影响到数据判断的正确性和安全性,给程序的测试运行造成很多麻烦.另外在面试题中也会遇到这些问题,如下: ...
- Nginx禁止通过IP,未绑定域名访问服务器
这几天查看CNZZ统计后台看到,我的IP被两个未知的域名绑定了,为了避免被天朝和谐掉, 可以在Nginx上设置禁止通过IP访问服务器,只能通过绑定域名访问(同时设置未绑定域名返回500错误或者跳转到我 ...
- C++ Vector
在c++中,vector是一个十分有用的容器,下面对这个容器做一下总结. 1 基本操作 (1)头文件#include<vector>. (2)创建vector对象,vector<in ...
- SGU 194 Reactor Cooling Dinic求解 无源无汇有上下界的可行流
题目链接 题意:有向图中有n(1 <= n <= 200)个点,无自环或者环的节点个数至少为3.给定每条边的最小流量和最大流量,问每条边的可行流量为多少? 思路:一般求解的网络流并不考虑下 ...
- 回首Java(始)
自接触Java开始,已然5载春秋. 如今每每在深入学习过程中,时刻感到力不从心. It's time!该拾起J2SE基石. 平地高楼,日积跬步.根底不坚实,如今才寸步维艰. 回头再温故.
- PHP漏洞全解(七)-Session劫持
本文主要介绍针对PHP网站Session劫持.session劫持是一种比较复杂的攻击方法.大部分互联网上的电脑多存在被攻击的危险.这是一种劫持tcp协议的方法,所以几乎所有的局域网,都存在被劫持可能. ...
- System.out.println(对象)
class Person { private String name; private int age; public String getName() { return this.name; } p ...
- 服务器部署_centos 安装nginx手记
前言: a.linux上安装nginx网上有很多文章,本文仅仅是自己整理备忘. b.安装centos的时候,把develop相关组件都装上,免得缺这个缺哪个. c. 本文软件版本:nginx-1.2. ...