API 测试(14)

编写程序,在测试用例失败时发送警告邮件

 

问题

 

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

 

设计

 

      使用System.Net.Mail命名空间里的MailMessage类创建一个MailMessage对象。然后为这个对象提供To和Subject等属性值,并且把测试用例失败的详细信息添加到它的Body属性。

 

方案

 

if (method == "ArithmeticMean")

{

      actual = MathLib.Methods.ArithmeticMean(input);

      if (actual.ToString("F4") == expected)

      {

            Console.WriteLine("Pass");

      }

      else

      {

            Console.WriteLine("*FAIL*. Sending e-mail");

            try

            {

                  MailMessage m = new MailMessage();

                  m.From = "Test Automation Harness";

                  m.To = "igoone@yeah.net";

                  m.Subject = "Test Case Failure";

 

                  m.BodyEncoding = System.Text.Encoding.ASCII;

                  m.BodyFormat = MailFormat.Html;

                  m.Priority = MailPriority.High;

 

                  m.Body = "Test case " + caseID + " failed";

                  SmtpMail.SmtpServer = "127.0.0.1";

                  SmtpMail.Send(m);

            }

            catch(Exception ex)

            {

                  Console.WriteLine("Fatal error sending mail: " + ex.Message);

            }

      }//测试用例失败

}

 

注解

 

      因为自动化测试程序经常在无人看管的情况下运行,我们可能想要在测试用例失败的时候给自己或者团队的某人人发送电子邮件,这样测试用例的失败信息就不会只存在于日志文件里而有可能不被注意到。我们还可能想要发送一封汇总了测试用例运行结果的电子邮件。在.NET环境下,有好几种方法都可以通过编程的方式来发送电子邮件,但是通过System.Net.Mail命名空间里的MailMessage类,通常是最简单的方法。上述方案中的代码假定已经添加了一个指向System.Net命名空间的工程引用(默认情况下,这个命名空间对于控制台程序来说是不可访问的),并且在测试套件代码里添加了下面这条语句:

 

using System.Net.Mail;

 

      在初始化一个MailMessage对象之后,应该为From,To,Subject,BodyEncoding,BodyFormat和Body等属性提供属性值。还可以把可选的Priority属性设为MailPriortiy.High。还要把BodyEncoding的值设为System.Text.Encoding中的某一个。通常使用的是Encoding.ASCII,但是如果愿意,还可以用Encoding.Unicode或者Encoding.UTF8。BodyFormat属性可以被设为MailFormat.Html或者MailFormat.Text。只要电子邮件系统没有缺陷,这两种方式都会工作得很好。Body属性是一个包含消息文本的字符串。至少应该把失败的测试用例的ID以及实际的返回值和期望的返回值包括在里面。

 

      从理论上来说,通过编写程序来发送电子邮件是比较简单的,但在实际应用中,会出现各种各样的问题。必须应对中继服务器(relay server)、代理服务器、网络安全策略以及防火墙等。因此最好的策略就是,尽可能地让运行测试套件的机器与其他机器独立开来。这样做可以防止无意中带来的负面影响,并且可以让测试套件在发送电子邮件时更为可靠。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值