数据驱动测试框架设计——16unittest和断言接入

之前的方法整合以后,我们如果用例失败,那么整合后的框架还是会显示执行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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值