case执行完成后一般通过预期结果判断case是否执行成功,然后将测试结果写回到excel中
1、通过预期结果判断case是否执行成功
首先需要判断case执行是否通过,就需要拿预期结果中的值,与case实际运行的值进行比较,所以我们可以拿接口中返回的某一个数据作为预期结果与接口实际执行结果进行比较
判断比较预期结果是否在我们接口返回数据里面,如果“在”,case执行成功,反之执行失败。
创建一个方法(common_util.py):判断一个字符串是否在另外一个字符串中
#coding:utf-8
class CommonUtil:
def is_contain(self,str_one,str_two):
"""
判断一个字符串是否在另外一个字符串中
:param str_one:查找的字符串
:param str_two:被查找的字符串
:return:
"""
flag = None
if str(str_one) in str(str_two):
flag = True
else:
flag = False
return flag
在主程序case循环执行中获取预期结果值,expect = self.data.get_expect_data(i)
,然后将新创建的方法引入到主程序from util.common_util import CommonUtil
执行代码如下:
# coding:utf-8
import sys
sys.path.append("F:/project/untitled")
from base.runmethod import RunMethod
from data.get_data import GetData
from util.common_util import CommonUtil
class RunTest:
def __init__(self):
self.run_method = RunMethod()
self.data = GetData()
self.com_until = CommonUtil()
# 程序执行主入口
def go_on_run(self):
rs = ""
# 获取excel行数,即case个数
rows_count = self.data.get_case_lines()
# 循环执行case
for i in range(1,rows_count):
res=""
url = self.data.get_request_url(i)
method = self.data.get_request_method(i)
is_run = self.data.get_is_run(i)
data = self.data.get_data_for_json(i) # 请求数据存放在json文件
expect = self.data.get_expect_data(i) # 获取预期结果值
header = self.data.is_header(i)
if is_run:
# 传入参数顺序与runmethod.py文件中run_main方法入参一致
res = self.run_method.run_main(method, url, data, header)
if self.com_until.is_contain(expect,res):
print("测试通过!")
else:
print("测试失败!")
rs+=str(res)+'\n'
return rs
if __name__ == '__main__':
run = RunTest()
run.go_on_run()
2、将测试结果写入到excel中
在operation.py中加入写入数据的方法
from xlutils.copy import copy
#写入数据
def write_value(self,row,col,value):
'''
写入excel数据
'''
read_data = xlrd.open_workbook(self.file_name)#先打开文件
write_data = copy(read_data)
sheet_data = write_data.get_sheet(0)
sheet_data.write(row,col,value)
write_data.save(self.file_name)
在get_data.py文件中封装一个写入数据的方法
#获取实际结果
def write_result(self,row,value):
col = int(data.data_config.get_result())
self.opera_excle.write_value(row,col,value)#调用写入数据的方法
在主方法(run_test.py)中写入用例执行结果
if is_run:
# 传入参数顺序与runmethod.py文件中run_main方法入参一致
res = self.run_method.run_main(method, url, data, header)
if self.com_until.is_contain(expect,res):
self.data.write_result(i,'pass')#调用获取实际结果的方法
else:
self.data.write_result(i,'fail')
rs+=str(res)+'\n'
关闭excle后执行程序