class AddTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'add') cases = excel.get_cases() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() @data(*cases) def test_add(self, case): # case.data = eval(case.data) # 变成字典 # print(type(case.data)) # if case.data.__contains__('mobilephone') and case.data['mobilephone'] == 'normal_user': # case.data['mobilephone'] = config.get('data', 'normal_user') # 拿到配置文件里面的值赋值给mobilephone # # if case.data.__contains__('pwd') and case.data['pwd'] == 'normal_pwd': # case.data['pwd'] = config.get('data', 'normal_pwd') # 拿到配置文件里面的值赋值给mobilephone # # if case.data.__contains__('memberId') and case.data['memberId'] == 'loan_member_id': # case.data['memberId'] = config.get('data', 'loan_member_id') # 拿到配置文件里面的值赋值给mobilephone # 在请求之前替换参数化的值 case.data = context.replace(case.data) resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(str(case.expected), resp.json()['code']) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e
class LoginTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'login') cases = excel.get_cases() @classmethod def setUpClass(cls): logger.info('准备测试前置') cls.http_request = HTTPRequest2() @data(*cases) def test_login(self,case): logger.info('开始测试{0}'.format(case.title)) resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected,resp.text) self.excel.write_result(case.case_id + 1,resp.text,'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1,resp.text,'FAIL') logger.error("报错了,{0}".format(e)) raise e @classmethod def tearDownClass(cls): logger.info('测试后置处理') cls.http_request.close()
class TestLogin(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'TestLogin') cases = excel.get_case() @classmethod def setUpClass(cls): logger.info('准备测试前置') cls.http_request = HTTPRequest2() @data(*cases) #data可以接收可迭代数据类型,列表,元组,字典 def test_login(self, case): # print(case.title) logger.info('开始测试:{0}'.format(case.title)) resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, "pass") except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "fail") logger.error('测试报错了,{0}'.format(e)) raise e logger.info('结束测试:{0}'.format(case.title)) @classmethod def tearDownClass(cls): logger.info('测试后置处理') cls.http_request.close()
class RegisterTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'register') cases = excel.get_cases() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() cls.mysql = do_mysql.DoMysql() @data(*cases) def test_register(self, case): if case.data.find('register_mobile') > -1: # 判断参数化的标识 sql = 'select max(mobilephone) from future.member where mobilephone = 18574379922' max_phone = self.mysql.fetch_one(sql)[0] # 查询最大手机号码 #最大手机号码+1 max_phone = int(max_phone) + 1 print('最大手机号码', max_phone) #replace 方法是替换之后重新返回一个新的字符串 case.data = case.data.replace('register_mobile', str(max_phone)) # 替换参数值 resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e
class RechargeTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'recharge') cases = excel.get_cases() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() cls.mysql = DoMysql() @data(*cases) def test_recharge(self, case): print(case.title) # 请求之前,判断是否需要执行SQL if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print(member['leaveamount']) before = member['leaveamount'] resp = self.http_request.request(case.method, case.url, case.data) actual_code = resp.json()['code'] try: self.assertEqual(str(case.expected), actual_code) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') # 成功之后,判断是否需要执行SQL if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print(member['leaveamount']) after = member['leaveamount'] recharge_amount = int(eval(case.data)['amount']) # 充值金额 self.assertEqual(before + recharge_amount, after) except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e
class InvestTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'invest') cases = excel.get_cases() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() cls.mysql = do_mysql.DoMysql() @data(*cases) def test_invest(self, case): print("开始执行测试:", case.title) # 在请求之前替换参数化的值 case.data = context.replace(case.data) resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(str(case.expected), resp.json()['code']) self.excel.write_result(case.case_id + 1, resp.text, 'PASS') # 判断加标成功之后,查询数据库,取到loan_id if resp.json()['msg'] == "加标成功": sql = "select id from future.loan where memberid = 1008 order by id desc limit 1" loan_id = self.mysql.fetch_one(sql)[0] print('标的ID:', loan_id) # 保存到类属性里面 setattr(Context, "loan_id", str(loan_id)) except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, 'FAIL') raise e @classmethod def tearDownClass(cls): cls.http_request.close()
class SourceTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'source') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HttpRequestSession() # cls.mysql = do_mysql.DoMysql() @data(*cases) def test_source(self, case): global headers # case.data = eval(case.data) # 变成字典 # if 'mobile' in case.data and case.data['mobile'] == 'normal_user': # case.data['mobile'] = config.get('data', 'normal_user') #拿到配置文件里的值赋给mobile # if 'password' in case.data and case.data['password'] == 'normal_pwd': # case.data['password'] = config.get('data', 'normal_pwd') # if 'project' in case.data and case.data['project'] == 'normal_project': # case.data['project'] = config.get('data', 'normal_project') # 在请求之前,替换参数化的值 case.data = context.replace(case.data) if case.title == '正常登陆': resp = self.http_request.request(case.method, case.url, data=case.data) token = resp.json()["data"]["access_token"] headers = {'Authorization': 'Bearer {}'.format(token)} else:
class TestRegister(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'TestRegister') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() cls.mysql = do_mysql.DoMysql() @data(*cases) #data可以接收可迭代数据类型,列表,元组,字典 def test_register(self, case): print(case.title) if case.data.find('register_mobile') > -1: sql = 'select max(mobilephone) from future.member' max_phone = self.mysql.fetch_one(sql)[0] #查询最大手机号码 #最大手机号码加1 # max_phone=int(max_phone)+1 #因为库里最大是18999999999,所以这行被我注释 print('最大手机号码', max_phone) #replace()方法是替换之后重新返回一个新的字符串,需要重新赋值给case.data case.data = case.data.replace('register_mobile', str(max_phone)) #最大手机号码替换参数值 resp = self.http_request.request(case.method, case.url, case.data) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, "pass") except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "fail") raise e
class LoginTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'login') cases = excel.get_case() @classmethod def setUpClass(cls): logger.info('准备测试前置') cls.http_request = HttpRequestSession() @data(*cases) def test_login(self, case): logger.info('开始测试:{}'.format(case.title)) resp = self.http_request.request(case.method, case.url, data=case.data) actual = resp.json()["message"] try: self.assertEqual(case.expected, actual) self.excel.write_result(case.case_id + 1, resp.text, "PASS") except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "FAIL") logger.error('测试报错了:{}'.format(e)) raise e logger.info('结束测试:{}'.format(case.title)) @classmethod def tearDownClass(cls): logger.info('测试后置处理') cls.http_request.close()
class PermissionTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'permission') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HttpRequestSession() @data(*cases) def test_permission(self, case): global headers if case.title == '正常登陆': resp = self.http_request.request(case.method, case.url, data=case.data) token = resp.json()["data"]["access_token"] headers = {'Authorization': 'Bearer {}'.format(token)} else:
class TestInvest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'TestInvest') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() cls.mysql = do_mysql.DoMysql() @data(*cases) #data可以接收可迭代数据类型,列表,元组,字典 def test_invest(self, case): print(case.title) #在请求之前替换参数化的值 case.data = context.replace(case.data) resp = self.http_request.request(case.method, case.url, case.data) print(resp.text) print(resp.status_code) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, "pass") #判断加标之后,查询数据库,取到loan_id if resp.json()['msg'] == "加标成功": sql = 'select id from future.loan where memberId = 1197 ORDER BY id desc limit 1;' loan_id = self.mysql.fetch_one(sql)[0] #fetch_one返回的是元组 print("标的id是:", loan_id) #保存到类属性里面 setattr(Context, "loan_id", str(loan_id)) except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "fail") raise e @classmethod def tearDownClass(cls): cls.http_request.close()
class TestAdd(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'TestAdd') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() @data(*cases) #data可以接收可迭代数据类型,列表,元组,字典 def test_add(self, case): print(case.title) # case.data=eval(case.data) #变成字典 # # if case.data.__contains__('mobilephone') and case.data['mobilephone'] == 'normal_user': # case.data['mobilephone'] = config.get('data','normal_user') #拿到配置文件里面的值赋值给mobilephone # # if case.data.__contains__('pwd') and case.data['pwd'] == 'normal_pwd': # case.data['pwd'] = config.get('data','normal_pwd') # # if case.data.__contains__('memberId') and case.data['memberId'] == 'loan_member_id': # case.data['memberId'] = config.get('data','loan_member_id') #在请求之前替换参数化的值 case.data = context.replace(case.data) resp = self.http_request.request(case.method, case.url, case.data) print(resp.text) print(resp.status_code) try: self.assertEqual(case.expected, resp.text) self.excel.write_result(case.case_id + 1, resp.text, "pass") except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "fail") raise e @classmethod def tearDownClass(cls): cls.http_request.close()
class TestRecharge(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'TestRecharge') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HTTPRequest2() cls.mysql = DoMysql() @data(*cases) #data可以接收可迭代数据类型,列表,元组,字典 def test_recharge(self, case): print(case.title) #请求之前,判断是否需要执行sql if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print(member['LeaveAmount']) before = member['LeaveAmount'] resp = self.http_request.request(case.method, case.url, case.data) actual_code = resp.json()['code'] #返回的是字典,然后找code,d[key] try: self.assertEqual(str(case.expected), actual_code) self.excel.write_result(case.case_id + 1, resp.text, "pass") # 成功之后,判断是否需要执行sql if case.sql is not None: sql = eval(case.sql)['sql1'] member = self.mysql.fetch_one(sql) print(member['LeaveAmount']) after = member['LeaveAmount'] recharge_amount = int(eval(case.data)['amount']) #充值金额 self.assertEqual(before + recharge_amount, after) except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "fail") raise e
class LoginTest(unittest.TestCase): excel = do_excel.DoExcel(contants.case_file, 'public') cases = excel.get_case() @classmethod def setUpClass(cls): cls.http_request = HttpRequestSession() cls.mysql = do_mysql.DoMysql() @data(*cases) def test_login(self, case): if case.data.find('login_mobile'): sql = 'select mobile from baiyou_pre.by_member where mobile="18356522530"' mobile = self.mysql.fetch_one(sql)[0] case.data = case.data.replace('login_mobile', mobile) resp = self.http_request.request(case.method, case.url, data=case.data) actual = resp.json()["message"] try: self.assertEqual(case.expected, actual) self.excel.write_result(case.case_id + 1, resp.text, "PASS") except AssertionError as e: self.excel.write_result(case.case_id + 1, resp.text, "FAIL") raise e