打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
C#读写txt文件的两种方法介绍
六大通信库,围攻西门子
In .net 4.8,calculate the time cost of serialization in BinaryFormatter,NewtonSoft.json,and System.T
C#中哈希表(HashTable)的用法详解
使用异常(C# 编程指南) | Microsoft Docs
c#实现每隔一段时间执行代码(多线程)-程序开发-红黑联盟
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服