API测试(十)

发表于:2009-11-04 18:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:James D. McCaffrey    来源:51Testing软件测试网采编

  示例程序:ApiTest

  此程序综合了前15篇的多种技术,编写了一个完整的轻量级的API测试套件。待测方法包括:ArithmeticMean(),GeometricMean()和HarmonicMean(),它们在API开始时候描述过。轻量级测试套件完整代码如下,这个程序从TestCases.txt文件每次读入一行测试用例数据。然后测试套件会解析出测试用例ID,并且一并得到待测方法的名称、输入值和期望值。输入值为传给待测方法,接下来程序把得到的实际结果和测试用例的期望结果进行比较。测试通过与否,最终的结果会发送到命令行程序并且记录到TestResults.txt文件。

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using MathLib;

namespace TestAutomation
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            try
            {
                FileStream ifs = new FileStream("..\\..\\TestCases.txt", FileMode.Open);
                StreamReader sr = new StreamReader(ifs);
                string stamp = DateTime.Now.ToString("s");
                stamp = stamp.Replace(":", "-");
                FileStream ofs = new FileStream("..\\..\\TestResults" + stamp + ".txt", FileMode.CreateNew);
                StreamWriter sw = new StreamWriter(ofs);

                string line, caseID, method;
                string[] tokens, tempInput;
                string expected;
                double actual = 0.0;
                int numPass = 0, numFail = 0;

                Console.WriteLine("\nCaseID Result Method Details");
                Console.WriteLine("===============================\n");

                while ((line = sr.ReadLine()) != null)
                {
                    tokens = line.Split(':');
                    caseID = tokens[0];
                    method = tokens[1];
                    tempInput = tokens[2].Split(' ');
                    expected = tokens[3];

                    int[] input = new int[tempInput.Length];

                    for (int i = 0; i < input.Length; i++)
                    {
                        input[i] = int.Parse(tempInput[i]);
                    }

                    if (method == "ArithmeticMean")
                    {
                        actual = MathLib.Methods.ArithmeticMean(input);
                        if (actual.ToString("F4") == expected)
                        {
                            Console.WriteLine(caseID + " Pass " + method + " actual = " + actual.ToString("F4"));
                            sw.WriteLine(caseID + " Pass " + method + " actual = " + actual.ToString("F4"));
                            ++numPass;
                        }
                        else
                        {
                            Console.WriteLine(caseID + " *FAIL " + method + " actual = " + actual.ToString("F4") + " expected = " + expected);
                            sw.WriteLine(caseID + " *FAIL " + method + " actual = " + actual.ToString("F4") + " expected = " + expected);
                            ++numFail;
                        }
                    }
                    else if (method == "GeometricMean ")
                    {
                        MathLib.Methods m = new MathLib.Methods();
                        actual = m.GeometricMean(input);
                        if (actual.ToString("F4") == expected)
                        {
                            Console.WriteLine(caseID + " Pass " + method + " actual = " + actual.ToString("F4"));
                            sw.WriteLine(caseID + " Pass " + method + " actual = " + actual.ToString("F4"));
                            ++numPass;
                        }
                        else
                        {
                            Console.WriteLine(caseID + " *FAIL " + method + " actual = " + actual.ToString("F4") + " expected = " + expected);
                            sw.WriteLine(caseID + " *FAIL " + method + " actual = " + actual.ToString("F4") + " expected = " + expected);
                            ++numFail;
                        }
                    }

                    else
                    {
                        Console.WriteLine(caseID + " " + method + " Not yet implemented");
                        sw.WriteLine(caseID + " " + method + " Not yet implemented");
                    }
                }//测试用例循环

                Console.WriteLine("\n==================end test run =================");
                Console.WriteLine("\nPass = " + numPass + "Fail = " + numFail);
                sw.WriteLine("\nPass = " + numPass + "Fail = " + numFail);

                sr.Close();
                ifs.Close();
                sw.Close();
                ofs.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine("Fatal error:" + ex.Message);
            }
            Console.ReadLine();
        }//Main()
    }//Class Program
}//ns TestAutomation

相关阅读:

API测试(九)

API测试(八)

API测试(七)

API测试(六)

API测试(五)

API测试(四)

API测试(三)

API测试(二)

API测试(一)

22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号