Пример #1
0
    def run_all(self):
        suite = unittest.TestSuite()

        loader = unittest.TestLoader()

        suite.addTest(loader.discover(do_path.cases_dir))
        # suite.addTest(loader.loadTestsFromTestCase(TestRegister))

        with open(do_path.report_path, "wb") as f:
            runner = HTMLTestRunnerNew.HTMLTestRunner(stream=f, tester=do_read_yaml.read_config("report", "tester"),
                                                      title=do_read_yaml.read_config("report", "title"),description="详情如下11:")
            runner.run(suite)
Пример #2
0
    def write_color(self):

        title = self.get_title()
        self.open_data()

        # fill = PatternFill("lightVertical", fgColor=colors.RED)
        # fill1 = PatternFill("lightVertical", fgColor=colors.GREEN)

        fill = PatternFill("solid", fgColor=colors.RED)
        fill1 = PatternFill("solid", fgColor=colors.GREEN)

        for i in list(self.sheet.columns)[title.index("result")]:
            if i.value == do_read_yaml.read_config("excel", "pass_value"):
                i.fill = fill1
            if i.value == do_read_yaml.read_config("excel", "fail_value"):
                i.fill = fill
        self.wb.save(self.path)
        self.wb.close()
    def read_mysql(self,
                   sql=do_read_yaml.read_config("mysql", "sql"),
                   args=None,
                   is_less=True):

        config = do_read_yaml.read_config("mysql", "config")

        self.cnn = pymysql.connect(**config)  # 连接数据库

        self.cursor = self.cnn.cursor(
            pymysql.cursors.DictCursor)  # 设置游标,输出内容是字典形式

        self.cursor.execute(sql, args)

        self.cnn.commit()  # 执行后提交

        if is_less:  # 如果sql语句查询单条记录,则用fetchone,查询多条用fetchall
            value = self.cursor.fetchone()
        else:
            value = self.cursor.fetchall()

        return value
Пример #4
0
    def test_register(self, item):
        logger.info(f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}")

        new_method = item.method

        new_url = do_read_yaml.read_config("requests", "url") + item.url

        new_data = eval(do_handle_params.handle_params(item.data))

        if item.title == "缺少必要的请求头":  # 为测试用例缺少必要的请求头准备
            headers = None
        else:
            headers = do_read_yaml.read_config("requests", "headers")

        result = self.do_requests.http_requests(method=new_method,
                                                url=new_url,
                                                data=new_data,
                                                headers=headers)

        row = item.case_id + 1
        column = do_excel.get_title().index(
            do_read_yaml.read_config("excel", "result_column")) + 1
        actul_column = do_excel.get_title().index(
            do_read_yaml.read_config("excel", "actul_column")) + 1

        pass_value = do_read_yaml.read_config("excel", "pass_value")
        fail_value = do_read_yaml.read_config("excel", "fail_value")

        try:
            self.assertEqual(
                eval(item.expected)["code"],
                result.json()["code"])
        except AssertionError as e:
            logger.error(
                f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}执行失败,异常为{e}"
            )
            do_excel.write_data(row, column, fail_value)
            raise e
        else:
            logger.info(f"测试用例执行成功--{item.title}")
            do_excel.write_data(row, column, pass_value)
        finally:
            # 写入测试实际结果
            do_excel.write_data(row, actul_column, result.text)

            # 设置单元格背景颜色
            do_excel.write_color()
Пример #5
0
    def test_add(self, item):

        global token  # 声明全局变量

        logger.info(f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}")

        # 最终的url地址
        new_url = do_read_yaml.read_config("requests", "url") + item.url

        # 经过转化的最终数据
        new_data = do_handle_params.handle_params(item.data)

        # 添加请求头
        if item.title == "缺少必要的请求头":  # 为测试用例缺少必要的请求头准备
            headers = None
        else:
            headers = do_read_yaml.read_config("requests", "headers")

        # 请求头中添加token
        headers.update(token)

        if " 充值成功" in item.title:
            # 获取充值前金额:
            self.before_value = float(
                do_mysql.read_mysql(do_read_yaml.read_config("mysql", "recharge_sql"), phone=item.data["mobile_phone"])[
                    "leave_amount"])
            do_mysql.close()

        # 发起请求
        result = self.do_requests.http_requests(method=item.method, url=new_url, data=new_data, headers=headers)

        if " 充值成功" in item.title:
            # 获取充值后金额:
            after_value = float(
                do_mysql.read_mysql(do_read_yaml.read_config("mysql", "recharge_sql"), phone=item.data["mobile_phone"])[
                    "leave_amount"])
            try:
                self.assertEqual(eval(item.data)["amount"], float(after_value) - float(self.before_value))
            except AssertionError as e:
                logger.error(f"充值后,数据库中数据异常!{e}")
                raise e
            do_mysql.close()

        row = item.case_id + 1
        column = do_excel.get_title().index(do_read_yaml.read_config("excel", "result_column")) + 1
        actul_column = do_excel.get_title().index(do_read_yaml.read_config("excel", "actul_column")) + 1

        pass_value = do_read_yaml.read_config("excel", "pass_value")
        fail_value = do_read_yaml.read_config("excel", "fail_value")

        try:
            self.assertEqual(eval(item.expected)["code"], result.json()["code"])
            self.assertEqual(eval(item.expected)["msg"], result.json()["msg"])
        except AssertionError as e:
            logger.error(f"正在执行{item.api}接口的第{item.case_id}条测试用例--{item.title}执行失败,异常为{e}")
            do_excel.write_data(row, column, fail_value)
            raise e
        else:
            logger.info(f"测试用例执行成功--{item.title}")
            do_excel.write_data(row, column, pass_value)

        finally:
            do_excel.write_data(row, actul_column, result.text)
            do_excel.write_color()

        # 如果是正常登录用例,则更新到全局变量token中
        if "正常登录" in item.title:
            token["Authorization"] = "Bearer " + result.json()["data"]["token_info"]["token"]
Пример #6
0
# authon:  Administrator
# __date__:  2019/11/24
# __time__:  16:42
# __file__:  test_D_add.py

import unittest
from my_Libs import ddt_obj
from Test_scripts.handle_mysql import do_mysql
from Test_scripts.handle_excel import ReadExcel
from Test_scripts.handle_mylogger import logger
from Test_scripts.handle_requests import HttpRequests
from Test_scripts.handle_params import do_handle_params
from Test_scripts.handle_read_config import do_read_yaml

do_excel = ReadExcel(sheet_name=do_read_yaml.read_config("excel", "sheet4_name"))

token = {}


@ddt_obj.ddt
class TestAdd(unittest.TestCase):
    """加标接口测试用例"""

    data = do_excel.get_data_obj()  # 测试数据

    @classmethod
    def setUpClass(cls):
        cls.do_requests = HttpRequests()
        # cls.do_requests.add_headers(do_read_yaml.read_config("requests", "headers"))

    @classmethod
# __date__:  2019/11/24
# __time__:  16:43
# __file__:  test_E_invest.py

import unittest
from my_Libs import ddt_obj
from Test_scripts.handle_mysql import do_mysql
from Test_scripts.handle_excel import ReadExcel
from Test_scripts.handle_mylogger import logger
from Test_scripts.handle_params import HandleParams
from Test_scripts.handle_requests import HttpRequests
from Test_scripts.handle_params import do_handle_params
from Test_scripts.handle_read_config import do_read_yaml

do_excel = ReadExcel(
    sheet_name=do_read_yaml.read_config("excel", "sheet5_name"))

token = {}


@ddt_obj.ddt
class TestInvest(unittest.TestCase):
    """投资测试用例"""

    data = do_excel.get_data_obj()  # 测试数据

    @classmethod
    def setUpClass(cls):
        cls.do_requests = HttpRequests()
        # cls.do_requests.add_headers(do_read_yaml.read_config("requests", "headers"))
Пример #8
0
    def __init__(self,
                 data_path=do_path.data_path,
                 sheet_name=do_read_yaml.read_config("excel", "sheet1_name")):

        self.path = data_path
        self.sheet_name = sheet_name