API 测试(16)

示例程序: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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值