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