예제 #1
0
 def test_case(self, case_value):
     # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
     do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
     # data_namedtuple = cases_list.pop(0)
     case_id = case_value.case_id
     msg = case_value.title
     new_url = do_config("api", 'prefix_url') + case_value.url
     new_data = Context.add_parameterization(case_value.data)
     method = case_value.method
     expect_result = case_value.expected
     actual_result = self.do_request(method, new_url, new_data).text
     # 将实际结果写入excel
     # ws.cell(row=case_id + 1, column=6, value=actual_result)
     try:
         self.assertEqual(actual_result,
                          expect_result,
                          msg='测试{}失败'.format(msg))
     except AssertionError as e:
         # print('具体异常为:{}'.format(e))
         do_log.error('具体异常为:{}'.format(e))
         # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e))
         # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e))
         # ws.cell(row=case_id + 1, column=7, value='Fail')
         # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail')
         do_excel.write_result(case_id + 1, actual_result,
                               do_config('msg', 'fail_result'))
         raise e
     else:
         # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass'))
         # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result')))
         # ws.cell(row=case_id + 1, column=7, value='Pass')
         # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass')
         do_excel.write_result(case_id + 1, actual_result,
                               do_config('msg', 'success_result'))
예제 #2
0
    def __init__(self):
        self.case_logger = logging.getLogger(do_config('log', 'logger_name'))

        self.case_logger.setLevel(do_config('log', 'logger_level'))

        console_output = logging.StreamHandler()
        # file_output = RotatingFileHandler(filename=os.path.join(LOG_DIR, do_config('log', 'logger_name')),
        #                                   maxBytes=do_config('log', 'maxBytes'),
        #                                   backupCount=do_config('log', 'backupCount'),
        #                                   encoding='utf8')

        file_output = ConcurrentRotatingFileHandler(
            filename=os.path.join(LOG_DIR, do_config('log', 'logger_name')),
            maxBytes=do_config('log', 'maxBytes'),
            backupCount=do_config('log', 'backupCount'),
            encoding='utf8')

        console_output.setLevel(do_config('log', 'console_level'))
        file_output.setLevel(do_config('log', 'file_level'))

        simple_formatter = logging.Formatter(
            do_config('log', 'simple_formatter'))
        verbose_formatter = logging.Formatter(
            do_config('log', 'verbose_formatter'))

        console_output.setFormatter(simple_formatter)
        file_output.setFormatter(verbose_formatter)

        self.case_logger.addHandler(console_output)
        self.case_logger.addHandler(file_output)
 def test_case(self, case_value):
     # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
     do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
     # data_namedtuple = cases_list.pop(0)
     case_id = case_value.case_id
     msg = case_value.title
     new_url = do_config("api", 'prefix_url') + case_value.url
     new_data = Context.login_parameterization(case_value.data)
     method = case_value.method
     expect_result = case_value.expected
     check_sql = case_value.check_sql
     if check_sql:
         check_sql = Context.login_parameterization(check_sql)
         mysql_result = self.do_mysql.sql_execute(check_sql)
         # decimal类型数据,需要转化为float
         money_before_recharge = float(mysql_result['LeaveAmount'])
         money_before_recharge = round(money_before_recharge, 2)  # 四舍五入保留两位小数
     actual_result = self.do_request(method, new_url, new_data)
     try:
         self.assertEqual(200,
                          actual_result.status_code,
                          msg='测试{}时,请求失败!状态码为{}'.format(case_value.title, actual_result.status_code))
     except AssertionError as e:
         do_log.error('具体异常为:{}'.format(e))
         raise e
     # 将实际结果写入excel
     # ws.cell(row=case_id + 1, column=6, value=actual_result)
     try:
         self.assertEqual(int(actual_result.json()['code']), expect_result, msg='测试{}失败'.format(msg))
         if check_sql:
             check_sql = Context.login_parameterization(check_sql)
             mysql_result = self.do_mysql.sql_execute(check_sql)
             # decimal类型数据,需要转化为float
             money_after_recharge = float(mysql_result['LeaveAmount'])
             money_after_recharge = round(money_after_recharge, 2)  # 四舍五入保留两位小数
             new_data_dict = json.loads(new_data, encoding='utf8')
             current_recharge_money = float(new_data_dict['amount'])
             actual_money = round(current_recharge_money+money_before_recharge, 2)
             self.assertEqual(actual_money, money_after_recharge, msg="数据库中充值后的金额有误")
     except AssertionError as e:
         # print('具体异常为:{}'.format(e))
         do_log.error('具体异常为:{}'.format(e))
         # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e))
         # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e))
         # ws.cell(row=case_id + 1, column=7, value='Fail')
         # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail')
         do_excel.write_result(case_id + 1, int(actual_result.json()['code']), do_config('msg', 'fail_result'))
         raise e
     else:
         # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass'))
         # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result')))
         # ws.cell(row=case_id + 1, column=7, value='Pass')
         # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass')
         do_excel.write_result(case_id + 1, int(actual_result.json()['code']), do_config('msg', 'success_result'))
예제 #4
0
    def test_case(self, case_value):
        # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
        do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
        # data_namedtuple = cases_list.pop(0)
        case_id = case_value.case_id
        setattr(Context, 'case_id', 1)
        msg = case_value.title
        url = case_value.url
        data3 = Context.user_verify_parameterization(case_value.data)
        method = case_value.method
        expect_result = case_value.expected
        actual_result = str(Webservice(url, data3, method).result_output())
        if case_id == 1:
            user_data = {'user_auth': data3}
            do_config.write_config(user_data, "user_data2.ini")
        if case_id == 2:
            sql = "DELETE f1,f2 FROM `t_user_info` AS f1 LEFT JOIN `t_user_auth_info` AS f2 ON f1.Fuid=f2.Fuid WHERE f2.Fuid=%s"
            self.do_mysql.sql_execute(sql,
                                      args=(do_config2("user_auth", "uid")))

        if case_id == do_excel.ws.max_row - 1:
            os.remove(CONFIG_USER_FILE_PATH2)
        # try:
        #     self.assertEqual(200,
        #                      actual_result.status_code,
        #                      msg='测试{}时,请求失败!状态码为{}'.format(case_value.title, actual_result.status_code))
        # except AssertionError as e:
        #     do_log.error('具体异常为:{}'.format(e))
        #     raise e
        # 将实际结果写入excel
        # ws.cell(row=case_id + 1, column=6, value=actual_result)
        try:
            self.assertEqual(actual_result,
                             expect_result,
                             msg='测试{}失败'.format(msg))
        except AssertionError as e:
            # print('具体异常为:{}'.format(e))
            do_log.error('具体异常为:{}'.format(e))
            # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e))
            # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e))
            # ws.cell(row=case_id + 1, column=7, value='Fail')
            # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail')
            do_excel.write_result(case_id + 1, actual_result,
                                  do_config('msg', 'fail_result'))
            raise e
        else:
            # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass'))
            # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result')))
            # ws.cell(row=case_id + 1, column=7, value='Pass')
            # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass')
            do_excel.write_result(case_id + 1, actual_result,
                                  do_config('msg', 'success_result'))
    def test_case(self, case_value):
        # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
        do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
        # data_namedtuple = cases_list.pop(0)
        case_id = case_value.case_id
        msg = case_value.title
        url = case_value.url
        data2 = Context.register_parameterization(case_value.data)
        if case_id == 1:
            if os.path.exists(CONFIG_USER_FILE_PATH):
                pass
            else:
                user_data = {
                    'user_info': {
                        'mobile': data2['mobile'],
                        'user_id': data2['user_id'],
                        'verify_code': data2['verify_code']
                    }
                }
                do_config.write_config(user_data, "user_data.ini")
                do_config.write_config(user_data, "user_data2.ini")
        method = case_value.method
        expect_result = case_value.expected
        actual_result = str(Webservice(url, data2, method).result_output())

        if case_id == do_excel.ws.max_row - 1:
            os.remove(CONFIG_USER_FILE_PATH)
        # 将实际结果写入excel
        # ws.cell(row=case_id + 1, column=6, value=actual_result)
        try:
            self.assertEqual(actual_result,
                             expect_result,
                             msg='测试{}失败'.format(msg))
        except AssertionError as e:
            # print('具体异常为:{}'.format(e))
            do_log.error('具体异常为:{}'.format(e))
            # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e))
            # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e))
            # ws.cell(row=case_id + 1, column=7, value='Fail')
            # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail')
            do_excel.write_result(case_id + 1, actual_result,
                                  do_config('msg', 'fail_result'))
            raise e
        else:
            # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass'))
            # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result')))
            # ws.cell(row=case_id + 1, column=7, value='Pass')
            # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass')
            do_excel.write_result(case_id + 1, actual_result,
                                  do_config('msg', 'success_result'))
예제 #6
0
def create_new_user(regname, pwd="123456"):
    """
    创建一个用户
    :param regname:
    :param pwd:
    :return:
    """
    do_request = HttpRequest()
    do_mysql = HandleMysql()
    url = do_config("api", "prefix_url") + "/member/register"
    sql = "SELECT * FROM future.`member` WHERE `MobilePhone`=%s;"
    while True:
        mobilephone = do_mysql.create_not_existed_mobile()
        data = {"mobilephone": mobilephone, "pwd": pwd, "regname": regname}
        do_request(method="post", url=url, params=data)
        result = do_mysql.sql_execute(sql=sql, args=(mobilephone, ))
        if result:
            user_id = result['Id']
            break

    user_dict = {
        regname: {
            "Id": user_id,
            "regname": regname,
            "mobilephone": mobilephone,
            "pwd": pwd
        }
    }
    do_request.close()
    do_mysql.close()

    return user_dict
 def test_case(self, case_value):
     """
     注册功能用例
     :param case_value:
     :return:
     """
     # print('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
     do_log.info('\nRunning Test Method: {}'.format(inspect.stack()[0][3]))
     # data_namedtuple = cases_list.pop(0)
     case_id = case_value.case_id
     msg = case_value.title
     url = case_value.url
     data1 = eval(Context.mobile_replace(case_value.data))
     method = case_value.method
     expect_result = case_value.expected
     actual_result = str(Webservice(url, data1, method).result_output())
     # 将实际结果写入excel
     # ws.cell(row=case_id + 1, column=6, value=actual_result)
     try:
         self.assertEqual(actual_result,
                          expect_result,
                          msg='测试{}失败'.format(msg))
     except AssertionError as e:
         # print('具体异常为:{}'.format(e))
         do_log.error('具体异常为:{}'.format(e))
         # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, 'Fail', e))
         # self.file.write('{},执行结果:{},具体异常为:{}\n'.format(msg, do_config('msg', 'fail_result'), e))
         # ws.cell(row=case_id + 1, column=7, value='Fail')
         # self.handle_excel.write_result(case_id + 1, actual_result, 'Fail')
         do_excel.write_result(case_id + 1, actual_result,
                               do_config('msg', 'fail_result'))
         raise e
     else:
         # self.file.write('{},执行结果:{}\n'.format(msg, 'Pass'))
         # self.file.write('{},执行结果:{}\n'.format(msg, do_config('msg', 'success_result')))
         # ws.cell(row=case_id + 1, column=7, value='Pass')
         # self.handle_excel.write_result(case_id + 1, actual_result, 'Pass')
         do_excel.write_result(case_id + 1, actual_result,
                               do_config('msg', 'success_result'))
예제 #8
0
    def write_result(self, row, actual, result):
        """
        将实际值与测试用例执行的结果保存到excel中
        :param row: 保存到哪一行
        :param actual: 实际值
        :param result: 测试用例执行的结果,“Pass”, “Fail”
        :return:
        """
        other_wb = load_workbook(self.filename)
        other_ws = other_wb[self.sheetname]

        if isinstance(row, int) and (2 <= row <= other_ws.max_row):
            other_ws.cell(row=row,
                          column=do_config("excel", "actual_col"),
                          value=actual)
            other_ws.cell(row=row,
                          column=do_config("excel", "result_col"),
                          value=result)
            other_wb.save(self.filename)
            other_wb.close()
        else:
            print("传入的行号有误,行号应为大于1的整数")
예제 #9
0
 def is_existed_mobile(self, mobile):
     """
     判断给定的手机号在数据库中是否存在
     :param mobile: 待判断的手机号
     :return: True、False
     """
     db_name = do_config('mysql', 'sms_db') + mobile[9:]
     form_name = "t_mvcode_info_" + mobile[8:9]
     sql = "SELECT * FROM {}.`{}` WHERE `Fmobile_no`={}".format(
         db_name, form_name, mobile)
     if self.sql_execute(sql):
         return True
     else:
         return False
예제 #10
0
 def __init__(self):
     self.conn = pymysql.connect(
         host=do_config('mysql', 'host'),
         port=do_config('mysql', 'port'),
         db=do_config('mysql', 'db'),
         user=do_config('mysql', 'user'),
         password=do_config('mysql', 'password'),
         charset=do_config('mysql', 'charset'),
         cursorclass=pymysql.cursors.DictCursor,
     )
     self.cursor = self.conn.cursor()
예제 #11
0
# file = open('test_result_3.txt', mode='w', encoding='utf8')
# 创建一个运行器对象,将测试结果存放到文件中
# runner = unittest.TextTestRunner(stream=file, descriptions='测试报告', verbosity=2)
# runner.run(suite)
# 关闭文件
# file.close()

# 上下文管理器,无需关闭文件
# with open('test_result_3.txt', mode='w', encoding='utf8') as file:
#     runner = unittest.TextTestRunner(stream=file, descriptions='测试报告', verbosity=2)
#     runner.run(suite)

# 美化报告
# runner = HTMLTestRunner(output='report', report_name='测试报告', report_title='测试报告标题', combine_reports=True)
# runner.run(suite)

# 进一步美化报告
report_path = os.path.join(REPORT_DIR, do_config('report', 'report_path'))
report_path_full = report_path + '_' + datetime.strftime(
    datetime.now(), '%Y%m%d%H%M%S') + '.html'
with open(report_path_full, mode='wb') as file:
    runner = HTMLTestRunnerNew.HTMLTestRunner(
        stream=file,
        title=do_config('report', 'title'),
        verbosity=do_config('report', 'verbosity'),
        description=do_config('report', 'description'),
        tester=do_config('report', 'tester'))
    runner.run(suite)

# 执行结果中,一个"."代表执行成功一条用例,一个"F"代表执行失败一条用例
예제 #12
0
 def __init__(self, end_num=None):
     if end_num is not None:
         self.conn = pymysql.connect(
             host=do_config('mysql', 'host'),
             port=do_config('mysql', 'port'),
             db=do_config('mysql', 'sms_db') + end_num,
             user=do_config('mysql', 'user'),
             password=do_config('mysql', 'password'),
             charset=do_config('mysql', 'charset'),
             cursorclass=pymysql.cursors.DictCursor,
         )
     else:
         self.conn = pymysql.connect(
             host=do_config('mysql', 'host'),
             port=do_config('mysql', 'port'),
             db=do_config('mysql', 'user_db'),
             user=do_config('mysql', 'user'),
             password=do_config('mysql', 'password'),
             charset=do_config('mysql', 'charset'),
             cursorclass=pymysql.cursors.DictCursor,
         )
     self.cursor = self.conn.cursor()
        # if method == getattr(Webservice, 'send_m_code'):
        #     self.result = Client(self.url1).service.sendMCode(params)
        #
        # if method == getattr(Webservice, 'user_register'):
        #     self.result = Client(self.url2).service.userRegister(params)
        #
        # if method == getattr(Webservice, 'verify_user_auth'):
        #     self.result = Client(self.url2).service.verifyUserAuth(params)
        #
        # if method == getattr(Webservice, 'bind_bank_card'):
        #     self.result = Client(self.url2).service.bindBankCard(params)

    def result_output(self):
        return self.result


if __name__ == '__main__':
    params1 = {
        "client_ip": "180.14.45.3",
        "mobile": "13711223344",
        "tmpl_id": "1"
    }
    # setattr(Webservice, 'send_m_code', 'send_m_code')
    # setattr(Webservice, 'user_register', 'user_register')
    # setattr(Webservice, 'verify_user_auth', 'verify_user_auth')
    # setattr(Webservice, 'bind_bank_card', 'bind_bank_card')
    do_webservice = Webservice(do_config("api", "send_m_code_url"), params1,
                               'sendMCode')
    result = do_webservice.result_output()
    print(result)