예제 #1
0
 def test(self, case):
     my_log.info(f'TestCase {case.case_name} starting------')
     # 数据预处理
     if case.preSql:
         case.preSql = myRex.my_replace(case.preSql)
         res = self.do_sql(case.preSql)
         attr = myRex.my_find(case.preSql, "as (.*?) from")
         setattr(ParmTemp, attr, res)
예제 #2
0
파일: test_all.py 프로젝트: julystone/keyou
class AddTestCase(unittest.TestCase):
    sheet_name = 'add'
    wb = ReadExcel(file_path, sheet_name)
    cases = wb.read_data_obj()

    @classmethod
    def setUpClass(cls):
        testRequest.request(
            method='post',
            url='http://test.lemonban.com/futureloan/mvc/api/member/login',
            data={
                "mobilephone": "13912345611",
                "pwd": "123456"
            })

    @classmethod
    def tearDownClass(cls):
        pass

    @data(*cases)
    def test(self, case):
        my_log.info(f'TestCase {case.case_name} starting------')
        case.request_data = my_replace(case.request_data)
        case.url = api + case.url

        expect = json.loads(case.expected_data)
        if case.checksql:
            case.checksql = my_replace(case.checksql)
            id_old = my_sql.select(case.checksql)[0] if my_sql.select(
                case.checksql) is not None else None
        actual = testRequest.request(method=case.method,
                                     url=case.url,
                                     data=eval(case.request_data),
                                     params=eval(case.request_data),
                                     timeout=5)
        actual = json.loads(actual) if actual is not None else None
        if case.checksql:
            id_new = my_sql.select(case.checksql)[0]
        result = None
        try:
            self.assertEqual((expect['status'], expect['code']),
                             (actual['status'], actual['code']))
            self.assertNotEqual(id_old, id_new) if case.checksql else True
        except (AssertionError, TypeError) as e:
            print(f"Not Passed...\n{expect['msg']}\n{actual['msg']}")
            print(f"\n请求参数为{case.request_data}")
            result = 'failed'
            my_log.error(f'【Failed】:E{expect} != A{actual}')
            raise e
        else:
            print('Passed')
            result = 'passed'
            my_log.info(f'【Success】:E{expect} == A{actual}')
        finally:
            # 2
            self.wb.w_data(case.row, self.wb.r_max()[1], result)
            my_log.info(f'TestCase {case.case_name} end------')
예제 #3
0
 def test(self, case):
     my_log.info(f'TestCase {case.case_name} starting------')
     # 数据预处理
     case.url = api + case.url
     if case.preSql:
         case.preSql = my_replace(case.preSql)
         db2pre = Mysql('user_db')
         res = db2pre.select(case.preSql)[0]
         setattr(ParmTemp, 'uid', res)
예제 #4
0
파일: test_all.py 프로젝트: julystone/keyou
class RechargeTestCase(unittest.TestCase):
    sheet_name = 'recharge'
    wb = ReadExcel(file_path, sheet_name)
    cases = wb.read_data_obj()

    @classmethod
    def setUpClass(cls):
        testRequest.request(
            method='post',
            url='http://test.lemonban.com/futureloan/mvc/api/member/login',
            data={
                "mobilephone": "13912345611",
                "pwd": "123456"
            })

    @classmethod
    def tearDownClass(cls):
        cls.wb.save()

    @data(*cases)
    def test(self, case):
        my_log.info(f'TestCase {case.case_name} starting------')
        case.request_data = my_replace(case.request_data)
        case.url = api + case.url

        expect = json.loads(case.expected_data)

        amount = case.amount if case.checksql else 0
        if case.checksql:
            case.checksql = my_replace(case.checksql)
            amount_bf = my_sql.select(case.checksql)[0]
        actual = testRequest.request(method=case.method,
                                     url=case.url,
                                     data=eval(case.request_data),
                                     params=eval(case.request_data))
        actual = json.loads(actual)
        if case.checksql:
            amount_af = my_sql.select(case.checksql)[0]
        try:
            self.assertEqual((expect['status'], expect['code']),
                             (actual['status'], actual['code']))
            self.assertEqual(amount, amount_af -
                             amount_bf) if case.checksql else print('未校验金额')
        except (AssertionError, TypeError) as e:
            print(f"Not Passed...\n{expect['msg']}\n{actual['msg']}")
            result = 'failed'
            my_log.error(f'【Failed】:E{expect} != A{actual}')
            raise e
        else:
            print('Passed')
            result = 'passed'
            my_log.info(f'【Success】:E{expect} == A{actual}')
        finally:
            # 2
            self.wb.w_data(case.row, self.wb.r_max()[1], result)
            my_log.info(f'TestCase {case.case_name} end------')
예제 #5
0
파일: test_all.py 프로젝트: julystone/keyou
    def test(self, case):
        my_log.info(f'TestCase {case.case_name} starting------')
        case.request_data = my_replace(case.request_data)
        case.url = api + case.url

        expect = json.loads(case.expected_data)
        if case.checksql:
            case.checksql = my_replace(case.checksql)
            status_old = my_sql.select(case.checksql)[0] if my_sql.select(
                case.checksql) is not None else None
예제 #6
0
파일: test_all.py 프로젝트: julystone/keyou
    def test(self, case):
        my_log.info(f'TestCase {case.case_name} starting------')
        case.request_data = my_replace(case.request_data)
        case.url = api + case.url

        expect = json.loads(case.expected_data)

        amount = case.amount if case.checksql else 0
        if case.checksql:
            case.checksql = my_replace(case.checksql)
            amount_bf = my_sql.select(case.checksql)[0]
예제 #7
0
 def test(self, case):
     my_log.info(f'TestCase {case.case_name} starting------')
     case.url = api + case.url
     actual = self.get_ret(case)
     expect = json.loads(case.expected_data)
     do_assert(actual, expect, self, case)
     if case.checkSql:
         mobile = eval(case.request_data)['mobile']
         setattr(ParmTemp, 'mobile', mobile)
         setattr(ParmTemp, 'tableno', mobile[-3:-2])
         setattr(ParmTemp, 'dbno', mobile[-2:])
         case.checkSql = myRex.my_replace(case.checkSql)
         verify_code = self.db.affect(case.checkSql)
         self.assertNotEqual(verify_code, None)
예제 #8
0
def do_assert(actual, expect, cls, case):
    try:
        cls.assertEqual((expect["retCode"], expect['retInfo']),
                        (actual['retCode'], actual['retInfo']))
    except AssertionError as e:
        print('Not Passed...')
        result = 'failed'
        print(case.request_data)
        my_log.error(f'【Failed】:E{expect} != A{actual}')
        print(f'E{expect}\nA{actual}')
        raise e
    else:
        print('Passed')
        result = 'passed'
        my_log.info(f'【Success】:E{expect} == A{actual}')
    finally:
        cls.wb.w_data(case.row, cls.wb.r_max()[1], result)
        my_log.info(f'TestCase {case.case_name} end------')
    return result
예제 #9
0
 def testBidLoan(self, case):
     my_log.info(f'TestCase {case.case_name} starting------')
     # login session
     testRequest.request(method='post', url='http://test.lemonban.com/futureloan/mvc/api/member/login',
                         data={"mobilephone": "13912345611", "pwd": "123456"})
     actual = testRequest.request(method=case.method, url=case.url, data=eval(case.request_data),
                                  params=eval(case.request_data))
     # actual = register(*eval(case.data))
     actual = json.loads(actual)
     expect = json.loads(case.expected_data)
     try:
         result = None
         self.assertEqual((expect['status'], expect['code']), (actual['status'], actual['code']))
     except AssertionError as e:
         print('Not Passed...')
         result = 'failed'
         print(f"{expect['msg']}\n{actual['msg']}")
         my_log.error(f'【Failed】:E{expect} != A{actual}')
         raise e
     else:
         print('Passed')
         result = 'passed'
         my_log.info(f'【Success】')
     finally:
         wb.w_data(case.row + 1, wb.r_max()[1], result)
         my_log.info(f'TestCase {case.case_name} end------')
예제 #10
0
파일: test_all.py 프로젝트: julystone/keyou
 def test(self, case):
     my_log.info(f'TestCase {case.case_name} starting------')
     number = self.checkNumber(case)
     case.request_data = my_replace(case.request_data, content=number)
     case.url = api + case.url
     actual = testRequest.request(method=case.method,
                                  url=case.url,
                                  data=eval(case.request_data),
                                  params=eval(case.request_data))
     actual = json.loads(actual)
     expect = json.loads(case.expected_data)
     try:
         result = None
         self.assertEqual((expect['status'], expect['code']),
                          (actual['status'], actual['code']))
     except AssertionError as e:
         print('Not Passed...')
         result = 'failed'
         print(f"{expect['msg']}\n{actual['msg']}")
         my_log.error(f'【Failed】:E{expect} != A{actual}')
         raise e
     else:
         print('Passed')
         result = 'passed'
         my_log.info(f'【Success】:E{expect} == A{actual}')
     finally:
         self.wb.w_data(case.row, self.wb.r_max()[1], result)
         my_log.info(f'TestCase {case.case_name} end------')
예제 #11
0
 def request(self,
             method,
             url,
             data=None,
             params=None,
             json=None,
             headers=None,
             cookies=None,
             timeout=None):
     if method.lower() == 'get':
         my_log.info(f'Sending {method}:{url} {params}')
         res = self.session.get(url=url,
                                params=params,
                                headers=headers,
                                cookies=cookies,
                                timeout=timeout)
     elif method.lower() == 'post':
         if json:
             my_log.info(f'Sending {method}:{url} {json}')
             res = self.session.post(url=url,
                                     json=json,
                                     headers=headers,
                                     cookies=cookies,
                                     timeout=timeout)
         else:
             my_log.info(f'Sending {method}:{url} {data}')
             res = self.session.post(url=url,
                                     data=data,
                                     headers=headers,
                                     cookies=cookies,
                                     timeout=timeout)
     else:
         res = None
     if res.status_code == 404:
         my_log.error(f'404 not found!')
         print('404 not found!')
         raise RuntimeError
     return res.text