API 测试(16)

来源:互联网 发布:淘宝订单号查询 系统 编辑:程序博客网 时间:2024/04/29 02:08

示例程序:ApiTest

 

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

 

==============Program ApiTest====================

 

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

原创粉丝点击