之前的方法整合以后,我们如果用例失败,那么整合后的框架还是会显示执行OK,所以我们这边还需要引入unittest的断言
思路:把之前的 if xxx == xxx:换成aeesrt的方法
源码:
# -*-coding:utf-8-*-
import ddt
import unittest
from Base.base_request import *
from Base.handle_result import *
from Base.handle_cookie import *
from Base.handle_header import *
from Base.codition_data import *
'''去掉之前框架中的data,现在的data给它重新赋值'''
data = excel_data.get_excel_data()
'''利用ddt,进行数据驱动'''
@ddt.ddt
class TestRunCserDdt(unittest.TestCase):
def setUp(self):
print("case开始执行")
def tearDown(self):
print("执行结束")
@ddt.data(*data)
def test_main_case(self,data):
'''给一个默认值'''
cookies = None
get_cookie = None
headers = None
'''i就是行号'''
i = excel_data.get_rows_number(data[0])
is_run = data[2]
'''判断如果第二列数据为yes则执行'''
if is_run == "yes":
'''获取前置条件'''
is_depend = data[3]
'''如果前置条件存在,获取依赖字段'''
data1 = json.loads(data[7])
if is_depend:
depend_key = data[4]
depend_data = get_data(is_depend)
data1[depend_key] = depend_data
'''获取请求方法'''
method = data[6]
'''获取请求url'''
url = data[5]
cookie_method = data[9]
header_method = data[8]
if cookie_method == "yes":
cookies = handlecookie.get_cookie_value("app")
if cookie_method == "write":
get_cookie = {"is_cookie": "web"}
'''操作header的情况'''
if header_method == "yes":
headers = getHeader.get_header()
'''用封装的request发送请求'''
res = request.run_main(method=method, url=url, get_cookie=get_cookie, cookies=cookies, headers=headers,
data=data1)
excel_data.excel_write_data(i,14,json.dumps(res))
'''获取实际errorCode对应的code'''
code = res["errorCode"]
'''获取实际的msg的值'''
msg = res["errorDesc"]
'''获取断言方法'''
assertion_method = data[10]
'''获取预期结果'''
excepect_result = data[11]
'''如果断言方法是mer'''
if assertion_method == "mer":
'''传入实际code获取config对应的msg值'''
config_msg = data_result.get_result(url, code)
'''进行断言'''
self.assertEqual(msg,config_msg)
# if msg == config_msg:
# '''直接写i行13列写入内容'''
# excel_data.excel_write_data(i,13,"case通过")
# else:
# excel_data.excel_write_data(i,13,"case失败")
'''如果断言方法是result'''
if assertion_method == "result":
self.assertEqual(str(res["errorCode"]),excepect_result)
# '''这块需要注意返回结果获取的result是整型,而我们Excel中获取
# 的是字符串,所以这边需要把格式统一再做比对'''
# if str(res["errorCode"]) == excepect_result:
# excel_data.excel_write_data(i,13,"case通过")
# else:
# excel_data.excel_write_data(i,13,"case失败")
if __name__ == '__main__':
unittest.main(verbosity=2)
但是这样有2个问题 1.之前excle中的结果没有写入了,2.如果发请求的过程中报错了那么还得写入结果失败 所以还得加工以下
源码:
# -*-coding:utf-8-*-
import ddt
import unittest
from Base.base_request import *
from Base.handle_result import *
from Base.handle_cookie import *
from Base.handle_header import *
from Base.codition_data import *
'''去掉之前框架中的data,现在的data给它重新赋值'''
data = excel_data.get_excel_data()
'''利用ddt,进行数据驱动'''
@ddt.ddt
class TestRunCserDdt(unittest.TestCase):
def setUp(self):
print("case开始执行")
def tearDown(self):
print("执行结束")
@ddt.data(*data)
def test_main_case(self,data):
'''给一个默认值'''
cookies = None
get_cookie = None
headers = None
'''i就是行号'''
i = excel_data.get_rows_number(data[0])
is_run = data[2]
'''判断如果第二列数据为yes则执行'''
if is_run == "yes":
try:
'''获取前置条件'''
is_depend = data[3]
'''如果前置条件存在,获取依赖字段'''
data1 = json.loads(data[7])
if is_depend:
depend_key = data[4]
depend_data = get_data(is_depend)
data1[depend_key] = depend_data
'''获取请求方法'''
method = data[6]
'''获取请求url'''
url = data[5]
cookie_method = data[9]
header_method = data[8]
if cookie_method == "yes":
cookies = handlecookie.get_cookie_value("app")
if cookie_method == "write":
get_cookie = {"is_cookie": "web"}
'''操作header的情况'''
if header_method == "yes":
headers = getHeader.get_header()
'''用封装的request发送请求'''
res = request.run_main(method=method, url=url, get_cookie=get_cookie, cookies=cookies, headers=headers,
data=data1)
excel_data.excel_write_data(i,14,json.dumps(res))
'''获取实际errorCode对应的code'''
code = res["errorCode"]
'''获取实际的msg的值'''
msg = res["errorDesc"]
'''获取断言方法'''
assertion_method = data[10]
'''获取预期结果'''
excepect_result = data[11]
'''如果断言方法是mer'''
if assertion_method == "mer":
'''传入实际code获取config对应的msg值'''
config_msg = data_result.get_result(url, code)
'''进行断言'''
try:
self.assertEqual(msg,config_msg)
excel_data.excel_write_data(i, 13, "case通过")
except Exception as e:
excel_data.excel_write_data(i, 13, "case失败")
raise e
'''如果断言方法是result'''
if assertion_method == "result":
try:
self.assertEqual(str(res["errorCode"]),excepect_result)
excel_data.excel_write_data(i, 13, "case通过")
except Exception as e:
excel_data.excel_write_data(i, 13, "case失败")
raise e
except Exception as e:
excel_data.excel_write_data(i, 13, "case失败")
if __name__ == '__main__':
unittest.main(verbosity=2)