API TestAutomation(轻量级自动化测试)

本文介绍了一个自动化API测试的实现案例,包括如何进行文件路径参数化、处理方法异常情况及测试失败时的邮件通知机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1。待测系统(SUT)

 

using System;

namespace Mathlib
{
    
public class Methods
    
{
        
public static int MethodSum(params int[] vals)
        
{
            
int sum=0;
            
if (vals == nullreturn 0;
            
for(int i=0;i<vals.Length;i++)
                sum
+=vals[i];
            
return sum;
        }

        
        
public static double MethodAverage(params int[] vals)
        
{
            
double average=0.0;
            
int sum=0;
            
for(int i=0;i<vals.Length;i++)
                sum
+=vals[i];
            average
=sum/vals.Length;
            
return average;
        }

    }

}

 

2。Program Apitest

 


using System;
using Mathlib;
using System.IO;
using System.Net.Mail;

namespace TestAutomation
{
    
/// <summary>
    
/// Description of APITest.
    
/// </summary>

    public class APITest
    
{
        
static void Main(string[] args)
        
{
            
try
            
{
                
//读取Testcases
                FileStream fs=new FileStream("../../Test data and result/Testcases.txt",FileMode.Open);
//                string testCasesFile=args[0];
//                FileStream fs=new FileStream(testCasesFile,FileMode.Open);//文件名与路径参数化
                StreamReader sr=new StreamReader(fs);
                
                
//创建一个以时间戳命名的文件夹,保存results
                string folder="Result"+DateTime.Now.ToString("s");
                folder
=folder.Replace(":","-");
                Directory.CreateDirectory(
"../../Test data and result/"+folder);
                
string path="../../Test data and result/"+folder+"/TestResults.txt";
                FileStream ofs
=new FileStream(path,FileMode.CreateNew);
                StreamWriter sw
=new StreamWriter(ofs);
                
                
string line, caseID, method;
                
string[] tokens,tempInput;
                
int[] input=null;
                
string expected;
                
int actual1=0;
                
double actual2=0.0;
                
int numPass=0,numFail=0,numCases=0;
                DateTime startTime
=DateTime.Now;//记录开始时间
                
                Console.WriteLine(
" CaseID Result Method Details");
                Console.WriteLine(
"============================ ");
                
while((line=sr.ReadLine())!=null)
                
{
                    tokens
=line.Split(':');
                    caseID
=tokens[0];
                    method
=tokens[1];
                    
if(tokens[2]=="NULL"//输入为NULL的处理方法
                        input=null;
                    
else
                    
{
                        tempInput
=tokens[2].Split(' ');
                        input
=new int[tempInput.Length];
                        
for(int i=0;i<input.Length;i++)
                            input[i]
=int.Parse(tempInput[i]);
                    }

                    expected
=tokens[3];
                    
if(method=="MethodSum")
                    
{
                        actual1
=Mathlib.Methods.MethodSum(input);
                        
if(actual1==int.Parse(expected))
                        
{
                            Console.WriteLine(caseID
+"  Pass  "+method+" actual= "+actual1.ToString());
                            sw.WriteLine(caseID
+"  Pass  "+method+" actual= "+actual1.ToString());
                            
++numPass;
                            
++numCases;
                        }

                        
else
                        
{
                            Console.WriteLine(caseID
+" *FAIL* "+method+" actual= "+actual1.ToString());
                            sw.WriteLine(caseID
+" *FAIL* "+method+" actual= "+actual1.ToString());
                            
++numFail;
                            
++numCases;
                        }

                        
                    }

                    
else if(method=="MethodAverage")
                    
{
                        actual2
=Mathlib.Methods.MethodAverage(input);
                        
if(actual2==double.Parse(expected))
                        
{
                            Console.WriteLine(caseID
+"  Pass  "+method+" actual= "+actual2.ToString());
                            sw.WriteLine(caseID
+"  Pass  "+method+" actual= "+actual2.ToString());
                            
++numPass;
                            
++numCases;
                        }

                        
else if(tokens[3]=="Exception")
                        
{
                            Console.WriteLine(caseID
+" *Fail* "+method+" actual= "+actual2.ToString());
                            sw.WriteLine(caseID
+" *Fail* "+method+" actual= "+actual2.ToString());
                            
++numFail;
                            
++numCases;
                        }

                    }

                    
else
                    
{
                        Console.WriteLine(caseID
+"        "+method+" Not yet implemented");
                        sw.WriteLine(caseID
+"          "+method+"  Not yet implemented");
                    }

                    
if((numPass+numFail)!=numCases)
                        Console.WriteLine(
"Warning:Counter logic failure");
                }

                Console.WriteLine(
" ======== end test run ========");
                Console.WriteLine(
" Pass = "+numPass+" Fail = "+numFail);
                DateTime endTime
= DateTime.Now;//记录结束时间
                TimeSpan elapsedTime = endTime-startTime;//计算用时
                sw.WriteLine(Environment.NewLine+"Number cases passed="+numPass);
                sw.WriteLine(
"Number cases failed="+numFail);
                sw.WriteLine(
"Total cases="+(numPass+numFail));
                
double percent=((double)numPass)/(numPass+numFail);
                sw.WriteLine(
"Percent passed="+percent.ToString("P"));
                sw.WriteLine(
"Elapsed Time="+elapsedTime.ToString());
                
                sr.Close();
                fs.Close();
                sw.Close();
                ofs.Close();
            }


            
catch(Exception e)
            
{
                Console.WriteLine(
"Fatal error: "+e.Message);
            }

            Console.ReadLine();
        }
//Main
    }
//Class class()
}
//TestAutomation

问题:

1。文件路径参数化

2。处理“方法抛出异常”的情况

3。在Apitest中在测试用例失败时发送警告邮件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值