Пример #1
0
	def test_add(self,one_case):
		# data = one_case['data']           #需要进行参数化
		new_data = Context.admin_user_tel_pwd_replace(one_case['data'])     #需要实现
		new_url = do_config.get_value('api', 'prefix_url') + one_case['url']



		#向服务器发起请求
		res = self.do_request.to_request(method=one_case['method'],
										   url=new_url,
										   data=new_data)
		#期望值
		expect_result = one_case['expected']
		msg = "测试" + one_case['title']
		success_msg = do_config.get_value('msg', 'success_result')
		fail_msg = do_config.get_value('msg', 'fail_result')
		case_id = one_case['case_id']

		try:
			# self.assertEqual(str(expect_result), code, msg=msg)
			self.assertIn(str(expect_result), res.text, msg=msg)

			do_excel.write_result(case_id+1, res.text, success_msg)
			do_logger.debug('{},执行结果为:{}'.format(msg, success_msg))
		except AssertionError as e:
			do_excel.write_result(case_id+1, res.text, fail_msg)
			do_logger.error('{}, 执行结果为:{}具体异常为:{}'.format(msg, fail_msg, e))
			raise e
Пример #2
0
    def __init__(self):
        # 定义一个名为case的收集器
        self.case_logger = logging.getLogger(do_config.get_value('log','logger_name'))
        # 设置收集器的日志等级
        self.case_logger.setLevel(do_config.get_value('log','logger_level'))
        # 定义输出渠道
        # 控制台输出渠道
        console_handle = logging.StreamHandler()
        # 文件输出渠道
        now = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time()))
        log_path = LOGS_DIR + '/logger_' + now + '.log'
        file_handle = logging.FileHandler(log_path, encoding='utf-8')

        # 设置输出渠道日志等级
        console_handle.setLevel(logging.ERROR)
        file_handle.setLevel(logging.INFO)
        # 定义日志格式
        simple_formatter = logging.Formatter(do_config.get_value('log','simple_formatter'))
        verbose_formatter = logging.Formatter(do_config.get_value('log','verbose_formatter'))
        # 设置日志输出格式
        console_handle.setFormatter(simple_formatter)
        file_handle.setFormatter(verbose_formatter)
        # 对接收集器与输出渠道
        self.case_logger.addHandler(console_handle)
        self.case_logger.addHandler(file_handle)
    def test_register(self,one_case):
        case_id = one_case['case_id']
        title = one_case['title']
        data = one_case['data'] # 需要参数化, 将手机号替换
        new_data = HandleContext.register_paramaterization_not_exist(data) #参数已经被正常实际好替换
        do_logger.debug('获取到的data数据为:{},在第【{}】'.format(new_data,case_id+1))
        url = one_case['url']
        total_url = do_config.get_value('requests','url_head') + url
        method = one_case['method']
        expected = one_case['expected']

        header = do_config.get_eval_data('requests','login_headers')
        register_res =do_http_requests.to_request(method=method,
                                                  url=total_url,
                                                  data=new_data,
                                                  headers=header)
        #real_result = login_res.json()['msg']
        real_result = register_res.text    #返回是字符串格式json
        #real_result = str(register_res.json()) #

        expected_result = expected
        msg = '测试' + title
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')

        try:
            self.assertEqual(expected_result,real_result,msg=msg)
            do_hanle_excel.write_case(case_id+1,real_result,success_msg)
            do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg,success_msg))
        except AssertionError as e:
            do_hanle_excel.write_case(case_id+1,real_result,fail_msg)
            do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format(msg,fail_msg,e))
            raise e
Пример #4
0
 def __init__(self):
     self.conn = pymysql.connect(
         host=do_config.get_value('mysql', 'host'),
         user=do_config.get_value('mysql', 'user'),
         password=do_config.get_value('mysql', 'password'),
         db=do_config.get_value('mysql', 'db'),
         port=do_config.get_int('mysql', 'port'),
         charset=do_config.get_value('mysql', 'charset'),
         cursorclass=pymysql.cursors.DictCursor)
     self.cursor = self.conn.cursor()
Пример #5
0
 def __init__(self):
     self.conn = pymysql.connect(
         host="192.168.10.65",
         user=do_config.get_value("mysql", "user"),
         password=do_config.get_value("mysql", "password"),
         port=do_config.get_int("mysql", "port"),
         database=do_config.get_value("mysql", "database"),
         charset="utf8",
         cursorclass=pymysql.cursors.DictCursor)
     self.cursor = self.conn.cursor()
Пример #6
0
def create_new_user(regname, pwd='123456'):
	'''创建一个账户'''
	handle_mysql = HandleMysql()
	send_request = HttpRequest()
	url = do_config.get_value('api', 'prefix_url') + '/member/register'
	sql = 'select id from member where MobilePhone=%s;'
	while True:
		mobilephone = handle_mysql.create_not_existed_mobile()
		data = {'mobilephone':mobilephone, 'pwd':pwd, 'regname':regname}
		send_request.to_request(method='post',
								url=url,
								data=data)
		result = handle_mysql.to_run(sql=sql, args=(mobilephone,))
		if result:
			user_id = result['id']
			break

	user_dict = {
		regname: {
			'Id': user_id,
			'regname': regname,
			'mobilephone': mobilephone,
			'pwd': pwd
		}
	}
	handle_mysql.close()
	send_request.close()

	return user_dict
Пример #7
0
    def test_recharge(self, one_case):
        # data = one_case['data']           #需要进行参数化
        new_data = Context.recharge_parameterization(one_case['data'])  #需要实现
        new_url = do_config.get_value('api', 'prefix_url') + one_case['url']

        check_sql = one_case['check_sql']
        if check_sql:
            check_sql = Context.recharge_parameterization(check_sql)
            mysql_data = self.handle_mysql.to_run(
                check_sql)  #decimal.Decimal类型
            amount_before_recharge = float(mysql_data['LeaveAmount'])
            amount_before_recharge = round(amount_before_recharge, 2)
            dict_data = json.loads(new_data, encoding='utf-8')
            recharge_number = dict_data['amount']

        #向服务器发起请求
        res = self.do_request.to_request(method=one_case['method'],
                                         url=new_url,
                                         data=new_data)
        #期望值
        expect_result = one_case['expected']
        msg = "测试" + one_case['title']
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')
        case_id = one_case['case_id']
        code = res.json().get('code')

        try:
            self.assertEqual(str(expect_result), code, msg=msg)
            # self.assertIn(str(expect_result), res.text, msg=msg)
            if check_sql:
                mysql_data = self.handle_mysql.to_run(
                    check_sql)  # decimal.Decimal类型
                amount_after_recharge = float(mysql_data['LeaveAmount'])
                amount_after_recharge = round(amount_after_recharge, 2)
                self.assertEqual(
                    recharge_number,
                    (amount_after_recharge - amount_before_recharge),
                    msg=msg)
            do_excel.write_result(case_id + 1, res.text, success_msg)
            do_logger.debug('{},执行结果为:{}'.format(msg, success_msg))
        except AssertionError as e:
            do_excel.write_result(case_id + 1, res.text, fail_msg)
            do_logger.error('{}, 执行结果为:{}具体异常为:{}'.format(msg, fail_msg, e))
            raise e
Пример #8
0
class ApiTest:
    for i in range(3):
        method = 'post'
        url = do_config.get_value('request', 'default_address') + '/member/register'
        data = '{"mobilephone": "${not_existed_tel}", "pwd": 123456, "regname": "刀刀"}'
        setattr(Context, 'existed', do_mysql.not_existed_tel())
        request_data = Context.mobilephone(data)
        res = do_request.send_request(method, url, data=request_data)
        print(res.text)
Пример #9
0
    def test_invest(self, one_case):
        # data = one_case['data']           #需要进行参数化
        # print(data)
        # print(type(data))
        new_data = Context.invest_parameterization(one_case['data'])  #需要实现
        print('-----------------')
        print(new_data)
        print('&&&&&&&&&&&&&&&&&&&')
        new_url = do_config.get_value('api', 'prefix_url') + one_case['url']

        #向服务器发起请求
        res = self.do_request.to_request(method=one_case['method'],
                                         url=new_url,
                                         data=new_data)

        if '加标成功' in res.text:
            check_sql = one_case['check_sql']
            if check_sql:
                check_sql = Context.invest_parameterization(check_sql)
                print(check_sql)
                mysql_data = self.handle_mysql.to_run(check_sql)
                print(mysql_data, type(mysql_data))
                #动态修改或者获取变量的一个过程
                # Context.loan_id = mysql_data.get('Id')   #类属性
                setattr(Context, "loan_id", mysql_data['Id'])
                print('-----动态----', getattr(Context, "loan_id"))
        #期望值
        expect_result = one_case['expected']
        msg = "测试" + one_case['title']
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')
        case_id = one_case['case_id']

        try:
            # self.assertEqual(str(expect_result), code, msg=msg)
            self.assertIn(str(expect_result), res.text, msg=msg)

            do_excel.write_result(case_id + 1, res.text, success_msg)
            do_logger.debug('{},执行结果为:{}'.format(msg, success_msg))
        except AssertionError as e:
            do_excel.write_result(case_id + 1, res.text, fail_msg)
            do_logger.error('{}, 执行结果为:{}具体异常为:{}'.format(msg, fail_msg, e))
            raise e
Пример #10
0
    def test_register(self, one_case):
        case_id = one_case['case_id']
        title = one_case['title']
        data = one_case['data']  # 需要参数化, 将手机号替换
        new_data = HandleContext.add_paramaterization(data)  # 参数已经被正常实际好替换

        do_logger.debug('new_data为:{},类型【{}】在第【{}】'.format(
            new_data, type(new_data), case_id + 1))

        # if case_id > 1:
        #     new_data_update = json.loads(new_data, encoding='utf-8')
        #
        #     do_logger.debug(
        #         'new_data_update为:{},类型【{}】在第【{}】'.format(new_data_update, type(new_data_update), case_id + 1))
        #     memberId = new_data_update['memberId']
        #     do_logger.debug('memberID为:{},类型【{}】在第【{}】'.format(memberId, type(memberId), case_id + 1))

        url = one_case['url']
        total_url = do_config.get_value('requests', 'url_head') + url
        method = one_case['method']
        expected = one_case['expected']

        header = do_config.get_eval_data('requests', 'login_headers')
        register_res = do_http_requests.to_request(method=method,
                                                   url=total_url,
                                                   data=new_data,
                                                   headers=header)
        # real_result = login_res.json()['msg']
        real_result = register_res.json().get('code')  # 返回是字符串格式json

        expected_result = expected
        msg = '测试' + title
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')
        try:
            self.assertEqual(str(expected_result), real_result, msg=msg)
            do_hanle_excel.write_case(case_id + 1, real_result, success_msg)
            do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg, success_msg))
        except AssertionError as e:
            do_hanle_excel.write_case(case_id + 1, real_result, fail_msg)
            do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format(
                msg, fail_msg, e))
            raise e
Пример #11
0
 def test_invest(self, case_list):
     case_list_str = str(case_list)
     context_data = HandleContext.manager_user_tel(case_list_str)
     context_data = HandleContext.manager_user_pwd(context_data)
     context_data = HandleContext.borrower_user_id(context_data)
     context_data = HandleContext.loan_id(context_data)
     context_data = HandleContext.investors_user_tel(context_data)
     context_data = HandleContext.investors_user_id(context_data)
     context_data = HandleContext.investors_user_pwd(context_data)
     context_data = HandleContext.not_existed_user_id(context_data)
     context_data = HandleContext.not_exitsed_loan_id(context_data)
     case_list_dict = eval(context_data)
     request_data = case_list_dict['data']
     method = case_list_dict['method']
     url = do_config.get_value(
         'request', 'default_address') + case_list_dict['url_path']
     res = do_request.send_request(method, url, data=request_data)
     add_success_msg = do_config.get_value('request', 'add_success_msg')
     actual = res.text
     if add_success_msg in actual:
         check_sql = case_list_dict['check_sql']
         if check_sql:
             loan_id_sql = do_mysql.sql_search(check_sql)
             loan_id_value = loan_id_sql['Id']
             setattr(HandleContext, 'loan_idw', loan_id_value)
     result = str(case_list_dict['expected'])
     msg = case_list_dict['title']
     true_result = do_config.get_value('msg', 'true_result')
     fail_result = do_config.get_value('msg', 'fail_result')
     try:
         self.assertIn(result, actual, msg)
         print('{},执行结果为:{}'.format(msg, true_result))
         my_excel.write_result(case_list_dict['case_id'] + 1, actual,
                               true_result)
         do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
     except AssertionError as e:
         print('具体异常为{}'.format(e))
         my_excel.write_result(case_list_dict['case_id'] + 1, actual,
                               fail_result)
         do_logger.error("{}, 执行结果为: {},具体异常为{}".format(
             msg, fail_result, e))
         raise e
    def test_invest(self,one_case):
        case_id = one_case['case_id']
        title = one_case['title']
        data = one_case['data'] # 需要参数化, 将手机号替换
        #换位recharge的参数化
        new_data = HandleContext.invest_paramaterization(data) #参数已经被正常实际好替换
        do_logger.debug('获取到的new_data数据为:{},在第【{}】'.format(new_data,case_id+1))
        url = one_case['url']
        total_url = do_config.get_value('requests','url_head') + url
        method = one_case['method']
        expected = one_case['expected']
        check_sql = one_case['check_sql']
        header = do_config.get_eval_data('requests','login_headers')
        invest_res =do_http_requests.to_request(method=method,
                                                  url=total_url,
                                                  data=new_data,
                                                  headers=header)
        invest_res_content = invest_res.text
        if '加标成功' in invest_res_content:  # 确定一定是加标成功
            if check_sql:
                check_sql = HandleContext.invest_paramaterization(check_sql)
                mysql_data = self.handle_mysql.run_mysql(check_sql)
                loan_id = mysql_data['Id']
                do_logger.debug('load_id的值为【{}】,在第  {}  行,返回值类型 {}'.format(loan_id,case_id+1,type(loan_id)))
                # 使用全局变量来解决接口依赖,极有可能出现循环导入,会抛出异常
                #接口依赖是动态获取变量的过程
                #HandleContext.loan_id = loan_id
                setattr(HandleContext,"loan_id",loan_id) # 给一个对象动态的创建属性
        real_result = invest_res.json().get('code')    #返回是字符串格式json
        expected_result = expected
        msg = '测试' + title
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')

        try:
            self.assertEqual(str(expected_result),real_result,msg=msg)
            do_hanle_excel.write_case(case_id+1,real_result,success_msg)
            do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg,success_msg))
        except AssertionError as e:
            do_hanle_excel.write_case(case_id+1,real_result,fail_msg)
            do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format(msg,fail_msg,e))
            raise e
Пример #13
0
    def __init__(self):
        self.case_logger = logging.getLogger(
            do_config.get_value("log", "logger_name"))
        self.case_logger.setLevel(do_config.get_value("log", "logger_level"))

        console_handle = logging.StreamHandler()
        # 输出到日志文件
        # file_handle = logging.FileHandler(do_config.get_value("log", "log_filename"), encoding="utf-8")
        file_handle = logging.FileHandler(log_file_path, encoding='utf-8')

        # 4. 指定日志输出渠道的日志等级
        console_handle.setLevel(do_config.get_value("log", "console_level"))
        file_handle.setLevel(do_config.get_value("log", "file_level"))

        # 5. 定义日志显示的格式
        simple_formatter = logging.Formatter(
            do_config.get_value("log", "simple_formatter"))
        verbose_formatter = logging.Formatter(
            do_config.get_value("log", "verbose_formatter"))

        console_handle.setFormatter(simple_formatter)  # 终端显示简单结构的日志
        file_handle.setFormatter(verbose_formatter)  # 日志文件显示复杂结构的日志

        # 6. 对接, 将日志收集器与输出渠道进行对接
        self.case_logger.addHandler(console_handle)
        self.case_logger.addHandler(file_handle)
Пример #14
0
 def test_register(self):
     method = 'POST'
     url = do_config.get_value('request', 'default_address')
     path = '/member/register'
     data = {"mobilephone": "${not_existed_tel}", "pwd": self.pwd, "regname": self.reg_name}
     tel_list = []
     for i in range(3):
         not_existed_tel = str(self.not_existed_tel())
         tel_list.append(not_existed_tel)
         data_re = re.sub(r'\${not_existed_tel}', not_existed_tel, str(data))
         request_result = do_request.send_request(method, url=url + path, data=eval(data_re))
     do_request.request_close()
     return tel_list
Пример #15
0
 def test_login(self, case):
     url = do_config.get_value("url", "aiot") + case["url"]
     data = case["data"]
     res = do_request.to_request(url, data=data)
     except_result = case["except"]
     real_result = res.json()["msg"]
     ms = case["title"]
     try:
         self.assertIn(except_result, real_result, msg=ms)
         get_log.info("{}执行通过".format(ms))
     except Exception as e:
         get_log.error("{}执行失败".format(ms))
         raise e
Пример #16
0
    def test_login(self, one_case):
        new_data = Context.register_parameterization(one_case['data'])
        new_url = do_config.get_value('api', 'prefix_url') + one_case['url']

        #向服务器发起请求
        res = TestLogin.do_request.to_request(method=one_case['method'],
                                              url=new_url,
                                              data=new_data)

        #期望值
        expected_result = one_case['expected']
        msg = "测试" + one_case['title']
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')
        case_id = one_case['case_id']
        try:
            self.assertEqual(expected_result, res.text, msg=msg)
            do_excel.write_result(case_id + 1, res.text, success_msg)
            do_logger.debug('{},执行结果为:{}'.format(msg, success_msg))
        except AssertionError as e:
            do_excel.write_result(case_id + 1, res.text, fail_msg)
            do_logger.error('{}, 执行结果:{}具体异常为:{}'.format(msg, fail_msg, e))
            raise e
Пример #17
0
 def test_login(self, case):
     url = do_config.get_value("url", "aiot") + case["url"]
     data = case["data"]
     res = do_request.to_request(url, data=data)
     except_result = case["except"]
     real_result = res.json()["msg"]
     ms = case["title"]
     try:
         self.assertIn(except_result, real_result, msg=ms)
         get_log.info("{}执行通过".format(ms))
         if res.json()["data"]:
             datas = {"info": {"Authorization": res.json()["data"]}}
             HandleConfig(TEST_CONFIG_PATH).write_config(
                 datas, TEST_CONFIG_PATH)
     except Exception as e:
         get_log.error("{}执行失败".format(ms))
         raise e
Пример #18
0
 def test_getUserInfo(self, case):
     url = do_config.get_value("url", "aiot") + case["url"]
     data = case["data"]
     author = HandleConfig(TEST_CONFIG_PATH).get_value(
         "info", "authorization")
     headers = {"Authorization": author}
     res = do_request.to_request(url,
                                 data=data,
                                 headers=headers,
                                 is_params=True)
     except_result = case["except"]
     real_result = res.json()["msg"]
     ms = case["title"]
     try:
         self.assertIn(except_result, real_result, msg=ms)
         get_log.info("{}执行通过".format(ms))
     except Exception as e:
         get_log.error("{}执行失败".format(ms))
         raise e
Пример #19
0
 def test_login(self, case_list):
     self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'login')
     request_result = do_request.send_request(case_list['method'],
                                              do_config.get_value('request', 'default_address') + case_list[
                                                  'url_path'],
                                              case_list['data'])
     actual_text = request_result.text
     actual_value = json.loads(actual_text)['code']
     actual = 'code: "{}",'.format(actual_value)
     result = case_list['expected']
     msg = case_list['title']
     try:
         self.assertEqual(result, actual, msg)
         print('{},执行结果为:{}'.format(msg, true_result))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, true_result)
         do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
     except AssertionError as e:
         print('具体异常为{}'.format(e))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual, fail_result)
         do_logger.error("{}, 执行结果为: {},具体异常为{}".format(msg, fail_result, e))
         raise e
Пример #20
0
 def test_recharge(self, case_list):
     self.my_HandleExcel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge')
     if case_list['check_sql']:
         before_sql_data = do_mysql.sql_search(
             case_list['check_sql'],
             virtue=eval(case_list['data'])['mobilephone'])
         self.before_leaveamount = float(before_sql_data['LeaveAmount'])
     request_result = do_request.send_request(
         case_list['method'],
         do_config.get_value('request', 'default_address') +
         case_list['url_path'], case_list['data'])
     actual = int(request_result.json().get('code'))
     result = case_list['expected']
     msg = case_list['title']
     try:
         self.assertEqual(result, actual, msg)
         if case_list['check_sql']:
             after_sql_data = do_mysql.sql_search(
                 case_list['check_sql'],
                 virtue=eval(case_list['data'])['mobilephone'])
             after_leaveamount = float(after_sql_data['LeaveAmount'])
             true_results = after_leaveamount - self.before_leaveamount
             self.assertEqual(
                 eval(case_list['data'])['amount'], round(true_results, 2),
                 msg)
         print('{},执行结果为:{}'.format(msg, true_result))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                          true_result)
         do_logger.error("{}, 执行结果为: {}".format(msg, true_result))
     except AssertionError as e:
         print('具体异常为{}'.format(e))
         self.my_HandleExcel.write_result(case_list['case_id'] + 1, actual,
                                          fail_result)
         do_logger.error("{}, 执行结果为: {},具体异常为{}".format(
             msg, fail_result, e))
         raise e
Пример #21
0
    def __init__(self):
        self.caselogger = logging.getLogger(
            do_config.get_value('log', 'logger_name'))

        self.caselogger.setLevel(do_config.get_value('log', 'logger_level'))

        console_handler = logging.StreamHandler()
        file_handler = logging.FileHandler(
            do_config.get_value('log', 'log_filename'))

        console_handler.setLevel(do_config.get_value('log', 'console_level'))
        file_handler.setLevel(do_config.get_value('log', 'file_level'))

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

        console_handler.setFormatter(simple_formattor)
        file_handler.setFormatter(complicated_formattor)

        self.caselogger.addHandler(console_handler)
        self.caselogger.addHandler(file_handler)
Пример #22
0
from scripts.constants import USER_ACCOUNTS_FILE_PATH, CASES_DIR
from scripts.handle_user import generate_users_config

if not os.path.exists(USER_ACCOUNTS_FILE_PATH):  #如果用户账号所在文件不存在,则创建用户账号
    generate_users_config()

#1.创建套件
# one_suite = unittest.TestSuite()

#2.加载用例
#创建加载器对象
# one_loader = unittest.TestLoader()
# one_suite.addTest(one_loader.loadTestsFromModule(register))

one_suite = unittest.defaultTestLoader.discover(CASES_DIR, pattern='test*.py')

#3.运行用例

report_name = do_config.get_value('report', 'report_html_name') + \
     datetime.strftime(datetime.now(), "%Y%m%d%H%M%S") +'.html'
report_full_path = os.path.join(REPORTS_DIR, report_name)
# print(report_full_path)
with open(report_full_path, mode='wb') as save_to_file:
    one_runner = HTMLTestRunnerNew.HTMLTestRunner(
        stream=save_to_file,
        verbosity=do_config.get_int('report', 'verbosity'),
        title=do_config.get_value('report', 'title'),
        description=do_config.get_value('report', 'description'),
        tester=do_config.get_value('report', 'tester'))
    one_runner.run(one_suite)
Пример #23
0
@Time: 2019-07-21 23:31
@Desc: S
"""

import json
import unittest
from libs.ddt import ddt, data
from scripts.handle_config import do_config
from scripts.handle_mysql import do_mysql
from scripts.handle_excel import HandleExcel
from scripts.handle_log import do_logger
from scripts.handle_path import DATA_COMMON_FILE_PATH
from scripts.handle_request import do_request
from scripts.handle_context import HandleContext

true_result = do_config.get_value('msg', 'true_result')
fail_result = do_config.get_value('msg', 'fail_result')


def excel_suite():
    register_excel = HandleExcel(DATA_COMMON_FILE_PATH, 'recharge')  # 实例化对象
    register_excel_cases = register_excel.get_cases()  # 获取excel测试用例
    register_cases = HandleContext.not_existed_tel(
        HandleContext.investors_user_pwd(
            HandleContext.investors_user_tel(
                str(register_excel_cases))))  # 执行参数化替换
    register_cases = eval(register_cases)
    wb, ws = register_excel.load_excel()
    wb.close()
    return register_cases
Пример #24
0
# coding=UTF-8
"""
@Author: STAURL.COM
@Contact: [email protected]
@Project: python_full_stack_automation_test
@File: test_cw0629_log.py
@Time: 2019-07-05 00:11
@Desc: S
"""

import logging

from scripts.handle_config import do_config
from scripts.handle_path import LOGS_DEBUG_FILE_PATH

logger_name = do_config.get_value('log', 'logger_name')
logger_level = do_config.get_value('log', 'logger_level')
console_leves = do_config.get_value('log', 'console_leves')
file_level = do_config.get_value('log', 'file_level')
simple_formatter_confing = do_config.get_value('log', 'simple_formatter')
verbose_formatter_config = do_config.get_value('log', 'verbose_formatter')


class HandleLog:
    def __init__(self):
        self.case_logger = logging.getLogger(logger_name)
        self.case_logger.setLevel(logger_level)

        console_handle = logging.StreamHandler()
        file_handle = logging.FileHandler(LOGS_DEBUG_FILE_PATH,
                                          encoding='utf-8')
Пример #25
0
@time: 2019/8/24 15:03
"""

import unittest
import os
from scripts.handle_excel import DoExcel
from scripts.handle_mysql import DoMysql
from libs.ddt import ddt, data
from scripts.handle_config import do_config
from scripts.handle_log import do_log
from scripts.handle_webservice import DoWebService
from scripts.constants import DATAS_DIR
from scripts.handle_context import Context

http_excel_path = os.path.join(
    DATAS_DIR, do_config.get_value('cases excel', 'http_excel_name'))
sheet_name = do_config.get_value('cases excel', 'register_sheet')
http_host = do_config.get_value('request info', 'host')

do_excel = DoExcel(http_excel_path, sheet_name)
cases = do_excel.get_cases()


@ddt
class TestRegister(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        cls.do_mysql = DoMysql()
        cls.do_mysql_user = DoMysql(db_name='user_db')
        do_log.info('{:=^40s}\n'.format('测试用户注册接口用例开始执行'))
Пример #26
0
@file: test_sendmcode.py
@time: 2019/8/24 11:38
"""


import unittest
import os
from scripts.handle_excel import DoExcel
from libs.ddt import ddt,data
from scripts.handle_config import do_config
from scripts.handle_log import do_log
from scripts.handle_webservice import DoWebService
from scripts.constants import DATAS_DIR
from scripts.handle_context import Context

http_excel_path=os.path.join(DATAS_DIR,do_config.get_value('cases excel','http_excel_name'))
sheet_name=do_config.get_value('cases excel','send_sheet')
http_host = do_config.get_value('request info','host')


do_excel=DoExcel(http_excel_path,sheet_name)
cases = do_excel.get_cases()


@ddt
class TestSendMCode(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        do_log.info('{:=^40s}\n'.format('测试发送短信验证码接口用例开始执行'))
    @classmethod
    def tearDownClass(cls):
Пример #27
0
# -*- coding: UTF-8 -*-
import unittest
from libs.HTMLTestRunnerNew import HTMLTestRunner
from scripts.handle_config import do_config
from cases import test_01_register
from datetime import datetime
from scripts.contants import REPORTS_DIR
import os

suite = unittest.TestSuite()
loader = unittest.TestLoader()
case = loader.loadTestsFromModule(test_01_register)
suite.addTests(case)

report_name = do_config.get_value('report',
                                  'report_html_name') + datetime.strftime(
                                      datetime.now(), '%Y%m%d%H%M%S') + '.html'
html_full_path = os.path.join(REPORTS_DIR, report_name)
with open(html_full_path, mode='wb') as file:
    runner = HTMLTestRunner(stream=file,
                            title='验证注册接口',
                            tester='gordon',
                            verbosity=2)
    runner.run(suite)
Пример #28
0
    def test_recharge(self, one_case):
        case_id = one_case['case_id']
        title = one_case['title']
        data = one_case['data']  # 需要参数化, 将手机号替换
        #换位recharge的参数化
        new_data = HandleContext.recharge_paramaterization(data)  #参数已经被正常实际好替换
        do_logger.debug('获取到的data数据为:{},在第【{}】'.format(new_data, case_id + 1))
        url = one_case['url']
        total_url = do_config.get_value('requests', 'url_head') + url
        method = one_case['method']
        expected = one_case['expected']
        #充值之前查询金额
        check_sql = one_case['check_sql']
        if check_sql:
            check_sql = HandleContext.recharge_paramaterization(check_sql)
            mysql_data = self.handle_mysql.run_mysql(check_sql)
            amount_before_regarge = float(
                mysql_data['LeaveAmount'])  # 返回decimal类型,需要用float转换
            amount_before_regarge = round(amount_before_regarge, 2)

        header = do_config.get_eval_data('requests', 'login_headers')
        register_res = do_http_requests.to_request(method=method,
                                                   url=total_url,
                                                   data=new_data,
                                                   headers=header)
        #real_result = login_res.json()['msg']
        real_result = register_res.json().get('code')  #返回是字符串格式json

        expected_result = expected
        msg = '测试' + title
        success_msg = do_config.get_value('msg', 'success_result')
        fail_msg = do_config.get_value('msg', 'fail_result')

        try:
            self.assertEqual(str(expected_result), real_result, msg=msg)
            if check_sql:
                #check_sql = HandleContext.recharge_paramaterization(check_sql)
                #充值后的金额
                mysql_data = self.handle_mysql.run_mysql(check_sql)
                amount_after_regarge = float(
                    mysql_data['LeaveAmount'])  # 返回decimal类型,需要用float转换
                amount_after_regarge = round(amount_after_regarge, 2)
                amount_expect_charge = json.loads(data,
                                                  encoding='utf-8')['amount']
                do_logger.debug('{}....类型{},  在第【{}】行'.format(
                    amount_expect_charge, type(amount_expect_charge),
                    case_id + 1))
                #将数据中计算出的充值前后的差值,再次转换为 取后2位小数
                amount_sql_recharge = round(
                    amount_after_regarge - amount_before_regarge, 2)
                self.assertEqual(amount_expect_charge,
                                 amount_sql_recharge,
                                 msg=msg)

            do_hanle_excel.write_case(case_id + 1, real_result, success_msg)
            do_logger.debug('{},用例执行成功,执行结果为:{}'.format(msg, success_msg))
        except AssertionError as e:
            do_hanle_excel.write_case(case_id + 1, real_result, fail_msg)
            do_logger.debug('{},用例用例执行失败,结果为:{},失败原因:{}'.format(
                msg, fail_msg, e))
            raise e
Пример #29
0
import pymysql
import random
from scripts.handle_config import do_config

start_mobile_dict = do_config.get_eval_data('mobile phone', 'start_mobile')
host = do_config.get_value('mysql','host')
user=do_config.get_value('mysql','user')
password=do_config.get_value('mysql','password')
db_hand=do_config.get_value('mysql','db_hand')
end_mobile = do_config.get_value('mobile phone','end_mobile')
db = db_hand + end_mobile[1:3]
table_name_hand=do_config.get_value('mysql','table_name_hand')
table_name =table_name_hand + end_mobile[0]
port=do_config.get_int('mysql','port')
# print(host,type(host),user,type(user),password,type(password),db,type(db),port,type(port))

class DoMysql:
    def __init__(self,db_name=None):
        self.db=db_name
        if self.db == None:
            self.conn = pymysql.connect(host=host,
                                   user=user,
                                   password=password,
                                   db=db, port=port,
                                   charset='utf8',
                                   cursorclass=pymysql.cursors.DictCursor)
        else:
            self.conn = pymysql.connect(host=host,
                                        user=user,
                                        password=password,
                                        db=self.db, port=port,
Пример #30
0
# -*- coding: utf-8 -*-
import unittest
from scripts.handle_config import do_config
from cases import test_01_register
from datetime import datetime
from scripts.contants import REPORTS_DIR, CASES_DIR
from scripts.contants import CONFIGS_USER_ACCOUNTS
from scripts.handle_user import generate_users
from libs.HTMLTestRunnerNew import HTMLTestRunner
import os
if not os.path.exists(CONFIGS_USER_ACCOUNTS):  # 如果用户账号坐在文件不存在,则创建账号
    generate_users()

#自动加载cases中的全部用例
suite = unittest.defaultTestLoader.discover(CASES_DIR, pattern='test_*.py')

# report_name = do_config.get_value('report', 'report_html_name') + datetime.strftime(datetime.now(), '%Y%m%d%H%M%S') + '.html'
report_name = do_config.get_value('report', 'report_html_name') + '.html'
html_full_path = os.path.join(REPORTS_DIR, report_name)
with open(html_full_path, mode='wb') as file:
    runner = HTMLTestRunner(stream=file,
                            title='验证注册接口',
                            tester='gordon',
                            verbosity=2)
    runner.run(suite)