test_bpm.py 2.62 KB
Newer Older
antares committed
1 2 3 4 5 6 7 8 9 10 11
# -*-coding:utf-8 -*- #
# ---------------------------------------------------------------------------
# ProjectName:   test62
# FileName:      test_bpm.py
# Author:       lao_zhao
# Datetime:     2024/9/4 15:46
# Description:
# 
# ---------------------------------------------------------------------------
import pytest

antares committed
12 13 14
from apiAutoTest_v30 import log
from apiAutoTest_v30.common.read_excel import ReadExcel
from apiAutoTest_v30.test_case.test_lisi import namespace
antares committed
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

excel = ReadExcel(namespace)


class TestBPM:

    @pytest.mark.parametrize("url, method, mime, case_data, expect_data, sql_type, sql_data, update_key", excel.get_data())
    def test_bpm(self, fix_db, fix_req, url, method, mime, case_data, expect_data, sql_type, sql_data, update_key):

        # 判断sql语句的类型是否为delete
        if sql_type == "delete":
            # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件
            fix_db.delete(sql_data['delete'])

        # 判断sql语句类型是否为select
        elif sql_type == "select":
            # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件
            select_result = fix_db.select(sql_data['select'])
            # 将查询结果更新到用例数据中
            case_data[update_key] = select_result

        # 判断sql语句的类型是否为select|delete 或者为 delete|select
        elif sql_type == "select|delete" or sql_type == "delete|select":
            # 使用DB类对象调用delete方法执行删除的sql语句,DB类对象===fix_db自定义固件
            fix_db.delete(sql_data['delete'])

            # 使用DB类对象调用select方法执行查询的sql语句, 并获取查询结果,DB类对象===fix_db自定义固件
            select_result = fix_db.select(sql_data['select'])
            # 将查询结果更新到用例数据中
            case_data[update_key] = select_result

        # 使用RequestMethod类对象发送请求
        res = fix_req.request_all(req_method=method, req_url=url, req_mime=mime, case_data=case_data)

        # 断言
        try:
            for key in expect_data.keys():
                assert expect_data[key] == res.json().get(key)
        except AssertionError:
            log.error(f"断言失败,接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}")
            raise AssertionError("断言失败")
        else:
            log.info(f"断言成功,接口url为:{url}, 用例数据:{case_data}, 期望数据:{expect_data}, 服务器返回数据:{res.text}")