class BindCard(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'bindcard') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.WS = WebService() cls.cf = DoConf(constant.globe_conf_dir) cls.log = LogTools(__name__) cls.log.mylog.info("开始测试") @data(*cases) def test_BindCard(self, case): self.log.mylog.info("当前执行的用例名称是:{}".format(case.title)) case_data = eval(context.param_replace(case.data)) resp = self.WS.web_services(case.url, case_data, case.method) try: global result self.assertEqual(case.expected, resp) result = "pass" except AssertionError as e: result = "fail" raise e finally: self.log.mylog.info("当前执行的用例执情况:{}".format(result)) self.excel.write_excel(case.case_id, str(resp), result) @classmethod def tearDownClass(cls): cls.log.mylog.info("结束测试")
class TestLogin(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'login') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.resp = Request() cls.conf = DoConf(constant.globe_conf_dir) @data(*cases) def test_login(self, case): LogTools().info("当前执行的用例名称是:{}".format(case.title)) case_data = context.param_replace(case.data) url = 'http://' + self.conf.get_value('dev_info', 'domain_name') + self.conf.get_value('dev_info', 'path') + case.url res = self.resp.http_request(case.method, url, case_data, headers=case.headers) LogTools().info("响应信息是:{}".format(res.text)) try: self.assertEqual(case.expected, res.text) result = 'pass' except Exception as e: result = 'fail' raise e finally: LogTools().info("响应结果是:{}".format(result)) self.excel.write_excel(case.case_id, res.text, result) @classmethod def tearDownClass(cls): cls.resp.close()
class TestAddBd(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'add_biao') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.resp = Request() cls.conf = DoConf(constant.globe_conf_dir) cls.con = DoMysql() @data(*cases) def test_add_bd(self, case): LogTools().info("当前执行的用例名称是:{}".format(case.title)) case_data = context.param_replace(case.data) if case.check_sql: case_check_sql = context.param_replace( eval(case.check_sql)['sql1']) begin_count = self.con.read_fetchone(case_check_sql)['COUNT(*)'] print(begin_count) url = 'http://' + self.conf.get_value( 'dev_info', 'domain_name') + self.conf.get_value( 'dev_info', 'path') + case.url res = self.resp.http_request(case.method, url, case_data, headers=case.headers) LogTools().info("响应信息是:{}".format(res.text)) try: if res.json()['msg'] == '加标成功': new_count = self.con.read_fetchone( context.param_replace(eval( case.check_sql)['sql1']))['COUNT(*)'] print(new_count) self.assertNotEqual(begin_count, new_count) #取借款用户所投标记录中的最大ID,并通过反射存在context类中,每投标成功一次覆盖context类中的load_id属性 case_check_sql1 = context.param_replace( eval(case.check_sql)['sql2']) load_id_value = self.con.read_fetchone( case_check_sql1)['max(id)'] setattr(context.Context, 'load_id', str(load_id_value)) else: self.assertEqual(case.expected, res.text) result = 'pass' except Exception as e: result = 'fail' raise e finally: LogTools().info("响应结果是:{}".format(result)) self.excel.write_excel(case.case_id, res.text, result) @classmethod def tearDownClass(cls): cls.resp.close() cls.con.close()
class TestRecharge(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'recharge') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.resp = Request() cls.conf = DoConf(constant.globe_conf_dir) cls.con = DoMysql() @data(*cases) def test_recharge(self, case): LogTools().info("当前执行的用例名称是:{}".format(case.title)) case_data = context.param_replace(case.data) if case.check_sql: case.check_sql = context.param_replace(case.check_sql) begin_balance = self.con.read_fetchone( case.check_sql)['leaveamount'] print(begin_balance) url = 'http://' + self.conf.get_value( 'dev_info', 'domain_name') + self.conf.get_value( 'dev_info', 'path') + case.url res = self.resp.http_request(case.method, url, case_data, headers=case.headers) LogTools().info("响应信息是:{}".format(res.text)) try: if res.json()['msg'] == '充值成功': new_balance = self.con.read_fetchone( case.check_sql)['leaveamount'] print(new_balance) self.assertEqual( int(begin_balance) + eval(case_data)['amount'], int(new_balance)) else: self.assertEqual(case.expected, res.text) result = 'pass' except Exception as e: result = 'fail' raise e finally: LogTools().info("响应结果是:{}".format(result)) self.excel.write_excel(case.case_id, res.text, result)
class TestAudit(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'audit') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.resp = Request() cls.conf = DoConf(constant.globe_conf_dir) cls.con = DoMysql() @data(*cases) def test_audit(self, case): LogTools().info("当前执行的用例名称是:{}".format(case.title)) case_data = context.param_replace(case.data) if case.check_sql: case.check_sql = context.param_replace(case.check_sql) begin_status = self.con.read_fetchone(case.check_sql)['status'] print(begin_status) url = 'http://' + self.conf.get_value( 'dev_info', 'domain_name') + self.conf.get_value( 'dev_info', 'path') + case.url res = self.resp.http_request(case.method, url, case_data, headers=case.headers) LogTools().info("响应信息是:{}".format(res.text)) try: if res.json()['code'] == "10001" and res.json( )['status'] == 1 and res.json()['msg'] != "登录成功": new_status = self.con.read_fetchone(case.check_sql) print(new_status) self.assertNotEqual(begin_status, new_status['status']) result = 'pass' setattr(context.Context, 'load_id', str(new_status['id'])) else: self.assertEqual(case.expected, res.text) result = 'pass' except AssertionError as e: result = 'fail' raise e finally: LogTools().info("响应结果是:{}".format(result)) self.excel.write_excel(case.case_id, res.text, result)
class UserAuth(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'userauth') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.WS = WebService() cls.sql = DoMysql("dbName1") cls.cf = DoConf(constant.globe_conf_dir) cls.log = LogTools(__name__) cls.log.mylog.info("开始测试") setattr(context.Context, "cre_id", IdNumber.generate_id(random.randint(0, 1))) @data(*cases) def test_UserAuth(self, case): self.log.mylog.info("当前执行的用例名称是:{}".format(case.title)) if case.check_sql: global count count = self.sql.read_fetchone(case.check_sql)["count(*)"] case_data = eval(context.param_replace(case.data)) resp = self.WS.web_services(case.url, case_data, case.method) try: global result self.assertEqual(case.expected, resp) if resp == "ok": new_count = self.sql.read_fetchone(case.check_sql)["count(*)"] self.assertEqual(count, new_count - 1) result = "pass" except AssertionError as e: result = "fail" raise e finally: self.log.mylog.info("当前执行的用例执情况:{}".format(result)) self.excel.write_excel(case.case_id, str(resp), result) @classmethod def tearDownClass(cls): cls.sql.close() cls.log.mylog.info("结束测试")
class Register(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'register') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.WS = WebService() cls.con = DoMysql("dbName1") cls.cf = DoConf(constant.globe_conf_dir) cls.log = LogTools(__name__) cls.log.mylog.info("开始测试") setattr(context.Context, "user_id", context.create_name()) @data(*cases) def test_Register(self, case): self.log.mylog.info("当前执行的用例名称是:{}".format(case.title)) case_data = eval(context.param_replace(case.data)) resp = self.WS.web_services(case.url, case_data, case.method) try: global result self.assertEqual(case.expected, resp) if resp == "ok": sql_result = self.con.read_fetchone( context.param_replace(case.check_sql)) uid = str(sql_result["Fuid"]) # 把验证码反射到context中的Context类 setattr(context.Context, "uid", uid) result = "pass" except AssertionError as e: result = "fail" raise e finally: self.log.mylog.info("当前执行的用例执情况:{}".format(result)) self.excel.write_excel(case.case_id, str(resp), result) @classmethod def tearDownClass(cls): cls.con.close() cls.log.mylog.info("结束测试")
class TestRegister(unittest.TestCase): excel = DoExcel(constant.excel_dir, 'register') cases = excel.read_excel() @classmethod def setUpClass(cls): cls.resp = Request() cls.con = DoMysql() cls.conf = DoConf(constant.globe_conf_dir) cls.log = LogTools(__name__) @data(*cases) def test_register(self, case): # self.log.info("当前执行的用例名称是:{}".format(case.title)) self.log.mylog.info("当前执行的用例名称是:{}".format(case.title)) case_data = eval(context.param_replace(case.data)) if case.check_sql: case_check_sql = context.param_replace(case.check_sql) sql_result = self.con.read_fetchone(case_check_sql) mobile_param1 = int(sql_result['mobilephone']) + random.randint( 1, 99) # 原先的手机号加一个随机数 case_data['mobilephone'] = str(mobile_param1) # 替换字典中的key url = 'http://' + self.conf.get_value( 'dev_info', 'domain_name') + self.conf.get_value( 'dev_info', 'path') + case.url res = self.resp.http_request(case.method, url, case_data, headers=case.headers) # self.log.info("响应信息是:{}".format(res.text)) self.log.mylog.info("响应信息是:{}".format(res.text)) try: if res.json()['msg'] == '注册成功': sql = 'select MobilePhone from member where MobilePhone = ' + case_data[ 'mobilephone'] mobile_param2 = self.con.read_fetchone(sql)['MobilePhone'] if mobile_param2 != self.conf.get_value( 'data', 'mobile'): # 判断是否是原始登录手机号 sql = 'select MobilePhone from member where MobilePhone = ' + mobile_param2 query_mobile = self.con.read_fetchone(sql) self.assertEqual(mobile_param2, query_mobile['MobilePhone']) # 第二次注册判断 result = 'pass' else: query_mobile = self.con.read_fetchone(sql) self.assertEqual(case_data['mobilephone'], query_mobile['MobilePhone']) # 第一次注册判断 result = 'pass' sql2 = 'select * from member where MobilePhone =' + case_data[ 'mobilephone'] member_id = str(self.con.read_fetchone(sql2)['id']) mobile_phone = str(self.con.read_fetchone(sql2)['mobilephone']) #把用户信息反射到context类,然后供后面的测试用例调用 # mobile_pwd = str(self.con.read_fetchone(sql2)['pwd']) setattr(context.Context, 'member_id', member_id) setattr(context.Context, 'mobile_phone', mobile_phone) # setattr(context.Context, 'mobile_pwd', mobile_pwd) else: self.assertEqual(case.expected, res.text) result = 'pass' except AssertionError as e: result = 'fail' raise e finally: # self.log.info("响应结果是:{}".format(result)) self.log.mylog.info("响应结果是:{}".format(result)) self.excel.write_excel(case.case_id, res.text, result) @classmethod def tearDownClass(cls): cls.resp.close() cls.con.close()