数据驱动
定义:程序和数据分离,测试数据存入一个文件中,脚本存入另一个文件中
数据文件路径: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