数据驱动、关键字驱动、混合驱动的区别


数据驱动

定义:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中

数据文件路径:e:\\pythonexcise\\aaa.txt

文件内容:-----以下内容请放到一个txt文本中

add||1||1||2
add||2||2||4
sub||1||1||0
sub||2||1||0

 

代码实现

#数据驱动模型
import traceback
#测试数据
with open("e:\\pythonexcise\\aaa.txt") as fp:
    data = fp.readlines()


#被测试对象
def add(a,b):

    return a+b

def sub(a,b):
    return a-b

#测试程序:
for line in data:
#split根据||切割,每一个值赋值给对应的变量
    func_name,value1,value2,expected_result = line.strip().split("||")
    test_data= "%s(%s,%s)" %(func_name,value1,value2) 
    print("关键字的数据:",test_data)
    actual_result = eval(test_data)#计算一个表达式的值并返回结果。
    try:
        assert actual_result == int(expected_result)
        print("测试执行成功,测试数据是%s,%s,%s" %(func_name,value1,value2))
    except AssertionError:
        traceback.print_exc()
        print("当前测试用例执行失败,测试数据是%s,%s,%s" %(func_name,value1,value2))
        print("期望的结果%s,实际的结果%s" %(expected_result,actual_result))
        
        
        
# 关键字的数据: add(1,1)
# 测试执行成功,测试数据是add,1,1
# 关键字的数据: add(2,2)
# 测试执行成功,测试数据是add,2,2
# 关键字的数据: sub(1,1)
# 测试执行成功,测试数据是sub,1,1
# 关键字的数据: sub(2,1)
# Traceback (most recent call last):
  # File "0716-data.py", line 24, in <module>
    # assert actual_result == int(expected_result)
# AssertionError
# 当前测试用例执行失败,测试数据是sub,2,1
# 期望的结果0,实际的结果1        

  

关键字驱动

定义:将测试用例的执行步骤存放在文件中,每个步骤单独封闭成一个函数,以这个函数名作为关键字,将函数名及传参写入文件中,第个步骤对应一行文件

数据文件路径:e:\\pythonexcise\\aaa.txt

文件内容:-----以下内容请放到一个txt文本中

add||1||1||2
add||2||2||4
sub||1||1||0
sub||2||1||0

代码实现

# 关键字驱动

import traceback
#测试数据
with open("e:\\pythonexcise\\aaa.txt") as fp:
    data=fp.readlines()
    
    
    
#被测试对像
def add(a,b):
    return a+b
    
    
def sub(a,b):
    return a-b
    
def execute_test_step(func_name,value1,value2):
    test_data="%s(%s,%s)"%(func_name,value1,value2)
    print("关键字的数据:",test_data)
    actual_result=eval(test_data)
    return actual_result
 
def get_test_data(test_data_file_path):
    test_data=[]
    with open(test_data_file_path) as fp:
        for i in fp.readline():
            param1,param2,expect_result=i.strip().split("||")
            test_data.append(int(param1),int(param2),int(expect_result))
    return test_data #[(4,2,2),(1,2,0)]
  
  
def assert_result(actual_result,expected_result):
    try:
        assert actual_result==int(except_result)
        print("测试执行成功,测试数据是%s,%s,%s"%(func_name,value1,value2))
    except AssertionError:
        traceback.print_exc()
        print("当前测试用例失败,测试数据是%s,%s,%s"%(func_name,value1,value2))
        print("期望的结果%s,实际的结果%s"%(expected_result,actual_result))
        
#测试程序:
for line in data:
    if len(line.strip().split("||"))==4:
        func_name,value1,value2,except_result=line.strip().split("||")
        actual_result=execute_test_step(func_name,value1,value2)
        assert_result(actual_result,except_result)
    elif len(line.strip().split("||"))==2:
        func_name,data_file_path=line.strip().split("||")
        test_data=get_test_data(data_file_path)
        for data in test_data:
            actual_result=execute_test_step(func_name,data[0],data[2])
            assert_result(actual_result,except_result)
            
            
            
# E:\pythonExcise>python 0714PO.py
# 关键字的数据: add(1,1)
# 测试执行成功,测试数据是add,1,1
# 关键字的数据: add(2,2)
# 测试执行成功,测试数据是add,2,2
# 关键字的数据: sub(1,1)
# 测试执行成功,测试数据是sub,1,1
# 关键字的数据: sub(2,1)
# Traceback (most recent call last):
  # File "0714PO.py", line 36, in assert_result
    # assert actual_result==int(except_result)
# AssertionError
# 当前测试用例失败,测试数据是sub,2,1
# 期望的结果0,实际的结果1
            
    

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM