Ejemplo n.º 1
0
class TestHttpRequest(unittest.TestCase):
    def setUp(self):
        self.t = DoExcel(pro_path.test_data_path, 'Sheet2')  #创建一个实例

    @data(*test_data)
    def test_api(self, item):
        global COOKIES  #声明全局变量,必要的时候去更新从cookie的值
        logging.info('正在执行第{0}条用例:{1}'.format(item['CaseId'], item['Title']))
        logging.info('发起请求的地址是:{0}'.format(item['URL']))
        logging.info('发起请求的参数是:{0}'.format(item['Param']))
        res = HttpRequest().http_request(item["URL"],
                                         eval(item["Param"]),
                                         item["Method"],
                                         cookies=COOKIES)
        #登录请求之后会产生一个cookie
        if res.cookies != {}:  #如果cookie不为空  就对全局变量进行修改
            COOKIES = res.cookies

    # 断言
        try:
            self.assertEqual(item['ExpectedResult'], res.json()['Message'])
            TestResult = 'PASS'  #存储测试用例的执行结果  通过是PASS  失败是fail
        except Exception as e:
            logging.error('出错了,错误是:{0}'.format(e))
            TestResult = 'FAIL'
            raise e
        finally:
            self.t.write_back(item['CaseId'] + 1, 7, str(
                res.json()))  #因为Excel里面只能支持传递字符串和整数,所以这里要强制转换一下
            self.t.write_back(item['CaseId'] + 1, 8, TestResult)
Ejemplo n.º 2
0
class TestLogin(unittest.TestCase):
    def setUp(self):
        self.t = DoExcel(DATA_PATH, "login")
        self.logger = MyLog("root")

    @data(*test_date)
    def test_login(self, item):
        self.logger.info("******************************")
        self.logger.info("正在执行的用例是 {}".format(item["title"]))
        self.logger.info("请求的数据是:{0}".format(item["data"]))
        res = HttpRequest().http_request(item["url"], eval(item["data"]),
                                         item["method"], item["type"])
        try:
            self.assertEqual(item["ExpectResult"], res.json()["message"])
            TestResult = "PASS"  # 如果不报错,测试通过
        except AssertionError as e:
            print("接口错误,错误是{}".format(e))
            TestResult = "Fail"  # 如果报错了,测试不通过
        finally:  # 不管测试结果是否正确,都把结果写入文件
            self.logger.info("*********开始写入结果********")
            self.t.write_back(item["case_id"] + 1, 8,
                              str(res.json()["message"]))  # 写入实际结果
            self.t.write_back(item["case_id"] + 1, 9, TestResult)  # 写入测试结果
            self.logger.info("*********结束写入数据********")
        # print(res.text)

    def tearDown(self):
        pass
Ejemplo n.º 3
0
    def test_cases(self, case):
        global test_result

        url = case['Url']
        method = case['Method']
        param = case['Param']
        case_id = case['CaseId']
        module = case['Module']
        expected_result = case['ExpectedResult']
        Log.info('用例参数为{}'.format(case))
        actual_result = HttpRequest().http_request(
            url, method, param, getattr(GetData, 'cookie'))  # 返回 resp
        if actual_result.cookies:
            setattr(GetData, 'cookie', actual_result.cookies)

        Log.info('第{}条{}模块用例,返回结果{}'.format(case_id, module,
                                            actual_result.text))
        try:
            self.assertEqual(expected_result, actual_result.json())
            test_result = 'Pass'
        except Exception as e:
            test_result = 'Fail'
            Log.error(e)
            raise e
        finally:
            Log.info(
                '-----------------------------------------开始写回测试结果-----------------------------------------'
            )
            DoExcel(project_path.test_cases_path).write_excel(
                'recharge', case_id + 1, 8, actual_result.text)
            DoExcel(project_path.test_cases_path).write_excel(
                'recharge', case_id + 1, 9, test_result)
Ejemplo n.º 4
0
class TestBayonet(unittest.TestCase):
    def setUp(self):
        self.BayonetDate = DoExcel(DATA_PATH, "bayonet")
        self.logger = MyLog("root")

    @data(*Data)
    def test_bayonet(self, item):
        self.logger.info("***********************")
        self.logger.info("正在执行的用例是{}".format(item["title"]))
        self.logger.info("请求的数据是:{}".format(item["data"]))
        res = requests.post(item["url"],
                            json=eval(item["data"]),
                            headers=headers)
        self.logger.info("接口返回的结果是{}".format(res.json()))
        try:
            self.assertEqual(item["ExpectResult"], res.json()["message"])
            TestResult = "PASS"  # 如果不报错,测试通过
        except AssertionError as e:
            print("接口错误,错误是{}".format(e))
            TestResult = "Fail"  # 如果报错了,测试不通过
        finally:  # 不管测试结果是否正确,都把结果写入文件
            self.logger.info("*********开始写入结果********")
            self.BayonetDate.write_back(item["case_id"] + 1, 8,
                                        str(res.json()["message"]))  # 写入实际结果
            self.BayonetDate.write_back(item["case_id"] + 1, 9,
                                        TestResult)  # 写入测试结果
            self.logger.info("*********结束写入数据********")
        # print(res.text)

    def tearDown(self):
        pass
Ejemplo n.º 5
0
 def test_api(self, item):
     passorfail = None
     #请求之前完成loanid的替换
     if item['data'].find('${loanid}') != -1:
         if getattr(GetData, 'loanid') == None:
             id = DoMysql.cnn_db(
                 'select max(id) from loan where memberid=82')[0]
             item['data'] = str(item['data']).replace('${loanid}', str(id))
             setattr(GetData, 'loanId', id)  #利用反射去存储结果
         else:
             item['data'] = str(item['data']).replace(
                 '${loanid}', str(getattr(GetData, 'LoanId')))
     #判断sql语句
     if item['sql'] == None:  #没有sql语句时
         print('正在执行的用例是:第{}条用例'.format(item['case_id']))
         res = HttpRequest().http_request(item['url'], eval(item['data']),
                                          item['http_method'],
                                          getattr(GetData, 'COOKIE'))
     else:  #有sql语句时
         print('正在执行的用例是:第{}条用例'.format(item['case_id']))
         sql = eval(item['sql'])['sql']
         #http请求前
         before_amount = DoMysql.cnn_db(sql)[0]
         res = HttpRequest().http_request(item['url'], eval(item['data']),
                                          item['http_method'],
                                          getattr(GetData, 'COOKIE'))
         #http请求后
         after_amount = DoMysql.cnn_db(sql)[0]
         amount = abs(after_amount - before_amount)
         if str(amount) == str(eval(item['data'])['amount']):
             check_res = '数据库校验正确'
         else:
             check_res = '数据库校验失败'
         DoExcel.write_checkres(testcase_path, item['interface'],
                                item['case_id'], check_res)
     print(res.json())
     if res.cookies:
         setattr(GetData, 'COOKIE', res.cookies)
     try:
         self.assertEqual(str(item['excepted']),
                          res.json()['code'])  # 断言,没有断言默认不管对错测试用例都执行通过
         passorfail = "成功"
     except Exception as e:
         print('失败用例{},{}:{}'.format(item['interface'], item['case_id'],
                                     res.json()))
         passorfail = "失败"
         raise e
     finally:
         DoExcel.write_back(testcase_path, item['interface'],
                            item['case_id'], str(res.json()), passorfail)
Ejemplo n.º 6
0
class TestUserRegister(unittest.TestCase):

    excel = DoExcel(case_files, 'userRegister')
    cases = excel.get_cases()

    @classmethod
    def setUpClass(cls):
        cls.mysql = DoMysql()
        warnings.simplefilter("ignore", ResourceWarning)

    @data(*cases)
    def test_register(self,case):

        data=replace(case.data)

        resp=HttpRequests().Wshttps(case.url,data,case.method)
        print(resp)

        # 断言
        try:
            self.assertEqual(case.expected, resp)

            if case.case_id == 1:
                # 将短信验证码保存到Context中
                code = CheckSql(self.mysql).query_mvcode(eval(data)['mobile'])
                print(code)
                setattr(Context, 'code', code)

            if case.case_id == 2:
                # 判断注册成功后,数据库是否有新增数据
                uuid =CheckSql(self.mysql).query_uuid(eval(data)['user_id'])
                self.assertIsNotNone(uuid)

            self.excel.writeResult(case.case_id + 1, str(resp), 'PASS')
Ejemplo n.º 7
0
    def test_api(self, data_item):
        global COOKIES

        api_logger.info('正在运行第%d条用例:%s' %
                        (data_item['id'], data_item['description']))
        api_logger.info('测试数据是:%s' % data_item['param'])

        res = HttpRequest().http_request(data_item['url'],
                                         eval(data_item['param']),
                                         data_item['http_method'], COOKIES)
        # 判断上一个请求有没有COOKIES
        if res.cookies:
            COOKIES = res.cookies
        api_logger.info('测试结果是:%s' % res)

        try:
            self.assertEqual(str(data_item['ExpectedResult']),
                             res.json()['code'])
            test_result = 'PASS'

        except AssertionError as e:
            test_result = 'FAIL'
            api_logger.error('请求出错了,错误是:%s' % e)
            raise e
        finally:
            # 测试结果写回
            DoExcel(file_path.testcase_path).weite_back(
                data_item['module'], data_item['id'] + 1,
                res.json()['code'], test_result)
Ejemplo n.º 8
0
class TestRecharge(unittest.TestCase):
    do_excel=DoExcel(contants.cases_dir)
    cases_recharge=do_excel.read_excel("recharge")

    @classmethod
    def setUpClass(cls):#继承unittest.TestCase中的方法,并重写
        print("这是一个类方法")
        cls.request = RequestMethod()#实例化放这里,使用session会话方式
        cls.my_logger = logger.get_logger(logger_name="TestRecharge")

    @data(*cases_recharge)
    def test_recharge(self,case):
        self.my_logger.info("开始执行第{}条用例".format(case.case_id))
        resp=self.request.request_method(case.method,case.url,case.data)
        try:
            self.assertEqual(case.expectedresult,resp.json()["code"],"recharge error")
            # expectedresult在Excel中是code码,这里只判断返回码
            # print(type(case.expectedresult))#在do_excel中已转换expectedresult的数据类型
            # print(type(resp.json()["code"]))

            self.do_excel.write_back(case.case_id+1,resp.text,"Pass")
            self.my_logger.info("充值第{}条用例执行结果:Pass".format(case.case_id))
        except AssertionError as e:
            self.do_excel.write_back(case.case_id+1, resp.text,"Failed")
            self.my_logger.error("充值第{}条用例执行结果:Failed".format(case.case_id))
            raise e

    @classmethod# 此处不要忘了加标识
    def tearDownClass(cls):
        cls.request.close()#类执行完毕,关闭session会话
Ejemplo n.º 9
0
class TestLogin(unittest.TestCase):
    excel = DoExcel(case_dir, "login")
    cases = excel.get_cases()

    def setUp(self):
        mylogger.info("前置")
        self.request = HttpRequest()

    def tearDown(self):
        self.request.close()
        mylogger.info("后置")

    @data(*cases)
    def test_login(self, case):
        mylogger.info("执行第{0}条用例:{1}".format(case.case_id, case.title))
        case.data = replace.replace(case.data)
        resp = self.request.request(method=case.method, url=case.url, data=case.data)
        try:
            self.assertEqual(resp.text, case.expected_response)
            self.excel.write_back(case.case_id+1, resp.text, "PASS")
        except AssertionError as e:
            self.excel.write_back(case.case_id+1, resp.text, "FAIL")
            mylogger.error("报错了,{0}".format(e))
            raise e
        mylogger.info("结束测试第{0}条用例:{1}".format(case.case_id, case.title))
Ejemplo n.º 10
0
class TestRecharge(unittest.TestCase):
    '这是一个充值接口测试类'
    do_excel = DoExcel(constant.case_file)
    cases_recharge = do_excel.read_data('recharge')
    mylog = my_log('recharge')

    @classmethod
    def setUpClass(cls):
        cls.request = Request()

    # def setUp(self):
    #     self.mylog.info('------------------------------开始执行用例--------------------------')

    @data(*cases_recharge)
    def test_recharge(self, case):  # 测试充值
        self.mylog.info('开始执行第{}条用例'.format(case.case_id))
        resp = self.request.request(case.method, case.url, case.data)
        try:
            self.assertEqual(case.expected, resp.json()['msg'])
            TestResult = 'PASS'
        except AssertionError as e:
            TestResult = 'FAIL'
            raise e
        finally:
            self.do_excel.write_back(case.case_id + 1, resp.text,
                                     TestResult)  # 写回实际结果
            self.mylog.info('第{}条用例的执行结果是{}'.format(case.case_id, TestResult))

    # def tearDown(self):
    #     self.mylog.info('------------------------------用例执行完成--------------------------')

    @classmethod
    def tearDownClass(cls):
        cls.request.session.close()
Ejemplo n.º 11
0
class TestSendMCode(unittest.TestCase):
    excel = DoExcel(constants.case_files, 'sendMCode')
    cases = excel.get_cases()

    @classmethod
    def setUpClass(cls):
        logger.info('测试前置,连接数据库')
        cls.mysql = DoMysql()
        warnings.simplefilter('ignore', ResourceWarning)

    @classmethod
    def tearDownClass(cls):
        logger.info('测试后置,关闭数据库')
        cls.mysql.close_mysql()

    @data(*cases)
    def test_SendMCode(self, case):
        logger.info("测试用例的标题是{0}".format(case.title))
        data = replace(case.data)

        logger.info(("替换data中的参数化值,并用data接收,返回的data的值是{0}".format(data)))
        resp = HttpRequests().Wshttps(case.url, data, case.method)
        try:
            self.assertEqual(case.expected, resp)
            if case.case_id == 1:
                code = CheckSql(self.mysql).query_mvcode(eval(data)['mobile'])
                self.assertIsNotNone(code)
            self.excel.writeResult(case.case_id + 1, str(resp), 'PASS')
        except AssertionError as e:
            self.excel.writeResult(case.case_id + 1, str(resp), 'FAIL')
Ejemplo n.º 12
0
class LoginTest(unittest.TestCase):
    do_excel = DoExcel(contains.data_path, 'login')
    conf_case = do_excel.get_conf("case", "row")
    re = do_excel.get_data(conf_case)  # 调用常量,需要先导常量所在文件包,在进行 文件名.常量,调用常量路径

    def setUp(self):
        pass
        logger.warn(
            'Enable tracemalloc to get the object allocation traceback')
        # warnings.simplefilter('ignore',ResourceWarning)
    @data(*re)
    def test_login(self, case):
        qq = Request().request(case.method, case.url, case.data)
        try:
            self.assertEqual(case.expected, qq, 'login_error')  #将返回结果和期望结果进行匹配
            self.do_excel.write_data(case.case_id + 1, qq, 'PASS')
            logger.info("第{}条用例执行结果:PASS".format(case.case_id))

        except AssertionError as e:
            self.do_excel.write_data(case.case_id + 1, qq, 'FAIL')
            logger.info("第{}条用例执行结果:FAIL".format(case.case_id))
            logger.error(e)

    def tearDown(self):
        pass
Ejemplo n.º 13
0
class LoginTest(unittest.TestCase):
    do_excel = DoExcel(contants.case_file)  # 传入test.xlsx
    cases = do_excel.get_data('login')  #定位表单
    request = Request()  #实例化request

    def setUp(self):
        pass

    @data(*cases)
    def test_login(self, item):  #用一个变量来解释data传递的数据

        # 使用封装好的request 来完成请求
        logger.info("开始执行第{}用例".format(item.id))
        resp = self.request.request(item.method, item.url, item.data)
        # 将返回结果和期望结果进行匹配
        try:
            self.assertEqual(item.expected, resp.text, "login error")
            self.do_excel.write_result('login', item.id + 1, resp.text, 'PASS')
            logger.info("第{}用例执行结果:PASS".format(item.id))
        except AssertionError as e:
            self.do_excel.write_result('login', item.id + 1, resp.text, 'FAIL')
            logger.error("第{}用例执行结果:FAIL".format(item.id))
            raise e

    def tearDown(self):
        pass
Ejemplo n.º 14
0
class TestUserRegister(unittest.TestCase):

    case_dir = contants.case_dir
    do_excel = DoExcel(case_dir, 'userRegister')
    cases = do_excel.get_data()
    logger = get_logger("register")

    @classmethod
    def setUpClass(cls):
        pass
        cls.mysql = MysqlUtil(return_dict= True)  # 生成一个数据库对象,返回的是数据字典
        cls.uid_list = []

    def setUp(self):
        pass

    @data(*cases)
    def test_user_register(self,case):
        self.logger.info("开始执行{0}模块的第{1}条用例:{2}".format(case.module, case.case_id, case.title))
        if json.loads(case.data)["ip"] == "${ip}":
            get_ip()
        if json.loads(case.data)["mobile"] == "${mobile}":
            check_mobile()
            if json.loads(case.data)["verify_code"] == "${verify_code}":
                get_code(getattr(context.Context, 'mobile'))  # 调用发送验证码的函数,发送验证码并将验证码设置为Context类的一个属性
Ejemplo n.º 15
0
class LoginTest(unittest.TestCase):
    do_excel = DoExcel(constants.case_file)  # 读取cases.xlsx
    cases = do_excel.get_cases('login')  # 指定读取login测试数据
    request = Request()  # 实例化对象

    def setUp(self):
        pass

    def tearDown(self):
        pass

    @data(*cases)
    def test_login(self, case):
        logger.info("开始执行第{0}用例".format(case.id))
        # 使用封装好的request 来完成请求
        resp = self.request.request(case.method, case.url, case.data)

        try:
            # 将返回结果和期望结果进行匹配
            self.assertEqual(case.expected, resp.text, 'login error')
            # 一致就写入Excel的结果为Pass
            self.do_excel.write_result('login', case.id + 1, resp.text, 'Pass')
            logger.info("第{0}用例执行结果:PASS".format(case.id))
        except AssertionError as e:
            # 不一致就写入Excel的结果为Fail,并抛出异常
            self.do_excel.write_result('login', case.id + 1, resp.text, 'Fail')
            logger.error("第{0}用例执行结果:FAIL".format(case.id))
            raise e
Ejemplo n.º 16
0
class APITest(unittest.TestCase):
    do_excel = DoExcel(contants.case_file)  # 传入cases.xlsx
    login_cases = do_excel.read('login')  # 一个就够,不需要重复写多个对象
    request = Request()  # 实例化一个对象

    def setUp(self):
        pass

    @unittest.skip("忽略测试,不要运行")  # 暂时不运行此用例
    @data(*login_cases)
    def test_login(self, case):
        print("开始执行第{0}行用例".format(case.case_id))
        # 使用分装好的request来完成请求
        resp = self.request.request(case.method, case.url, case.data)  # 实例对象已移到外面,这里要加self.
        # 将返回结果与期望结果对比
        try:
            self.assertEqual(case.expected, resp.text, 'login error')
            # 一致就写入Excel的结果PASS
            self.do_excel.write_back(case.case_id+1, resp.text, 'PASS')  # 实例对象已放外面,类变量加self.
            print("第{0}行用例执行结果:PASS".format(case.case_id))
        except AssertionError as e:
            self.do_excel.write_back(case.case_id+1, resp.text, 'FAIL')  # 实例对象已放外面,类变量加self.调用
            print("第{0}行用例执行结果:FAIL".format(case.case_id))
            raise e

    register_cases = do_excel.read('register')  # 增加了一个方法

    # mysql = MysqlUtil()  # 实例化对象(进行了一次数据库的连接)
    # sql = "SELECT MAX(MobilePhone) FROM future.member WHERE MobilePhone LIKE '152%';"  # 传一条sql进来
    # max = mysql.fetch_one(sql)[0]  # 找到最大手机号码, 元组里取第1个值
    # print(type(max), max)

    @data(*register_cases)
    def test_register(self, case):

        mysql = MysqlUtil()  # 实例化对象(进行了一次数据库的连接)
        sql = "SELECT MAX(MobilePhone) FROM future.member WHERE MobilePhone LIKE '152%';"  # 传一条sql进来
        max = mysql.fetch_one(sql)[0]  # 找到最大手机号码, 元组里取第1个值

        print("开始执行第{0}行用例".format(case.case_id))
        import json
        data_dict = json.loads(case.data)  # Excel字符串转成字典
        if data_dict['mobilephone'] == '${register_mobile}':  # 判断是否等于标记
            data_dict['mobilephone'] = int(max) + 1  # 将最大手机号码+1 赋值给mobilephone

        # 使用封装好的request来完成请求
        resp = self.request.request(case.method, case.url, data_dict)  # 实例对象已移到外面,这里要加self.
        # 将返回结果与期望结果对比
        try:
            self.assertEqual(case.expected, resp.text, 'register error')
            # 一致就写入Excel的结果PASS,并且
            self.do_excel.write_back(case.case_id+1, resp.text, 'PASS')  # 实例对象已放外面,类变量加self.
            print("第{0}行用例执行结果:PASS".format(case.case_id))
        except AssertionError as e:
            self.do_excel.write_back(case.case_id+1, resp.text, 'FAIL')  # 实例对象已放外面,类变量加self.调用
            print("第{0}行用例执行结果:FAIL".format(case.case_id))
            raise e

    def tearDown(self):
        pass
Ejemplo n.º 17
0
class TestInvest(unittest.TestCase):
    excel = DoExcel(case_dir, "invest")
    cases = excel.get_cases()

    @classmethod
    def setUpClass(cls):
        cls.request = HttpRequest()
        cls.mysql = DoMysql()

    @classmethod
    def tearDownClass(cls):
        cls.request.close()
        cls.mysql.close()

    @data(*cases)
    def test_invest(self, case):
        case.data = replace.replace(case.data)
        resp = self.request.request(method=case.method,
                                    url=case.url,
                                    data=case.data)

        try:
            self.assertEqual(str(case.expected_response), resp.json()["code"])
            self.excel.write_back(case.case_id + 1, resp.text, "PASS")

            if resp.json()["msg"] == "加标成功":
                sql = "select id from future.loan where memberId = 1231 order by id desc limit 1"
                loan_id = self.mysql.fetchone(sql)["id"]
                setattr(replace.Context, "loan_id", str(loan_id))

        except AssertionError as e:
            self.excel.write_back(case.case_id + 1, resp.text, "FAIL")
            raise e
Ejemplo n.º 18
0
class LoginTest(unittest.TestCase):
    # 可类里,也可模块外
    do_excel = DoExcel(contants.case_file)  # 传入cases.xlsx
    cases = do_excel.read('login')
    request = Request()  # 实例化一个对象
    # 可类里,也可模块外

    def setUp(self):
        pass

    @data(*cases)  # 此处传入数据,so读数据就要从test_login()方法移到方法外面,for case in cases:也需删掉
    def test_login(self, case):  # 加case接收解包数据
        print("开始执行第{0}行用例".format(case.case_id))
        # 使用分装好的request来完成请求
        resp = self.request.request(case.method, case.url, case.data)  # 实例对象已移到外面,这里要加self.
        # 将返回结果与期望结果对比
        # 当用unittest时,比对用断言,不用if恒等==手动了
        try:
            self.assertEqual(case.expected, resp.text, 'login error')
            # 一致就写入Excel的结果PASS
            self.do_excel.write_back(case.case_id+1, resp.text, 'PASS')  # 实例对象已放外面,类变量加self.
            print("第{0}行用例执行结果:PASS".format(case.case_id))
        except AssertionError as e:
            self.do_excel.write_back(case.case_id, resp.text, 'FAIL')  # 实例对象已放外面,类变量加self.调用
            print("第{0}行用例执行结果:FAIL".format(case.case_id))
            raise e

    def tearDown(self):
        pass
Ejemplo n.º 19
0
class TestLogin(unittest.TestCase):
    """
    描述登录接口的类
    """
    do_excel = DoExcel(contants.case_file)  # 利用.实现上下级,来引入其他目录下的文件
    cases = do_excel.read_data('login')
    req = RequestMethod()  # 实例化Reqeust类的对象

    def setUp(self):
        pass

    @data(*cases)
    def test_login(self, case):

        resp = self.req.request_method(case.method, case.url,
                                       case.data)  # 返回请求结果
        logger.info("case.expected:{}".format(case.expected))
        try:
            self.assertEqual(resp.text, case.expected, "Login Error")
            self.do_excel.write_data('login', case.case_id + 1, resp.text,
                                     'PASS')
            logger.info("第{0}条用例测试结果:PASS".format(case.case_id))
        except AssertionError as e:
            self.do_excel.write_data('login', case.case_id + 1, resp.text,
                                     'FAIL')
            logger.error("第{0}条用例测试结果:FAIL".format(case.case_id))
            raise e

    def tearDown(self):
        pass
class LoginTest(unittest.TestCase):
    do_excel = DoExcel(contants.case_file)  # 传入cases.xlsx
    cases = do_excel.get_cases('login')
    request = Request()  # 实例化对象

    def setUp(self):
        pass

    @data(*cases)
    def test_login(self,case):
        logger.info("开始执行第{0}用例".format(case.id))
        # 使用封装好的request 来完成请求
        resp = self.request.request(case.method, case.url, case.data)
        # 将返回结果和期望结果进行匹配
        try:
            self.assertEqual(case.expected, resp.text, "login error ")
            # 一致就写入Excel的结果为PASS,并且
            self.do_excel.write_result('login',case.id + 1, resp.text, 'PASS')
            logger.info("第{0}用例执行结果:PASS".format(case.id))
        except AssertionError as e:
            self.do_excel.write_result('login',case.id + 1, resp.text, 'FAIL')
            logger.error("第{0}用例执行结果:FAIL".format(case.id))
            raise e

    def tearDown(self):
        pass
Ejemplo n.º 21
0
class LoginTest(unittest.TestCase):
    do_excel = DoExcel(contants.excel_path)
    login_cases = do_excel.read_data("login")

    @classmethod
    def setUpClass(cls):
        cls.request = Request()

    def setUp(self):
        pass

    @data(*login_cases)
    def test_login(self, case):
        logger.info('开始执行第{0}条用例'.format(case.id))
        resp = self.request.request(case.method, case.url, case.data)
        try:
            self.assertEqual(case.expected, resp.text)
            self.do_excel.write_data('login', case.id + 1, resp.text, 'PASS')
            logger.info('第{0}条用例执行结果:pass'.format(case.id))
        except AssertionError as e:
            self.do_excel.write_data('login', case.id + 1, resp.text, 'FAIL')
            logger.error('第{0}条用例执行结果:fail'.format(case.id))
            raise e

    def tearDown(self):
        pass

    @classmethod
    def tearDownClass(cls):
        cls.request.session.close()
Ejemplo n.º 22
0
    def test_case(self, sheet_name):

        do_excel = DoExcel(contants.case_file)  #利用.实现上下级,来引入其他目录下的文件
        cases = do_excel.read_data(sheet_name)

        req = RequestMethod()  #实例化Reqeust类的对象
        for case in cases:
            resp = req.request_method(case.method, case.url,
                                      case.data)  #返回请求结果
            print("case.expected:{}".format(case.expected))
            if resp.text == case.expected:
                do_excel.write_data('login', case.case_id + 1, resp.text,
                                    'PASS')
            else:
                do_excel.write_data('login', case.case_id + 1, resp.text,
                                    'FAIL')
Ejemplo n.º 23
0
class TestRegister(unittest.TestCase):
    excel = DoExcel(case_dir, "register")
    cases = excel.get_cases()

    @classmethod
    def setUpClass(cls):
        cls.request = HttpRequest()
        cls.mysql = DoMysql()

    @classmethod
    def tearDownClass(cls):
        cls.request.close()
        cls.mysql.close()

    @data(*cases)
    def test_register(self, case):
        if case.data.find("register_mobile"):
            sql = "select max(mobilephone) from future.member"

            register_mobile = int(
                self.mysql.fetchone(sql)["max(mobilephone)"]) + 100
            case.data = case.data.replace("register_mobile",
                                          str(register_mobile))
            print(case.data)

        resp = self.request.request(method=case.method,
                                    url=case.url,
                                    data=case.data)

        try:
            self.assertEqual(resp.text, case.expected_response)
            self.excel.write_back(case.case_id + 1, resp.text, "PASS")
        except AssertionError as e:
            self.excel.write_back(case.case_id + 1, resp.text, "FAIL")
            raise e
Ejemplo n.º 24
0
class RechargeTest(unittest.TestCase):
    do_excel = DoExcel(contants.data_file)
    cases = do_excel.get_data('withdraw')

    def setUp(self):
        pass

    @data(*cases)
    def test_recharge(self, case):
        logger.info('开始执行第{}条用例'.format(case.case_id))
        res = request.request(case.method, case.url, case.data)
        logger.info(res.json())
        try:
            self.assertEqual(case.expected, res.json()['code'])
            self.do_excel.write_back(case.case_id + 1,
                                     res.json()['code'], 'PASS')
        except AssertionError as e:
            self.do_excel.write_back(case.case_id + 1,
                                     res.json()['code'], 'Failed')
            logger.error('断言错误:{}'.format(e))
            raise e

    def tearDown(self):
        pass

    @classmethod
    def tearDownClass(cls):
        request.session.close()  # 关闭request请求
Ejemplo n.º 25
0
class TestVerifiedUserAuth(unittest.TestCase):

    case_dir = contants.case_dir
    do_excel = DoExcel(case_dir, 'verifyUserAuth')
    cases = do_excel.get_data()
    logger = get_logger("auth")

    @classmethod
    def setUpClass(cls):
        pass
        cls.mysql = MysqlUtil(return_dict= True)  # 生成一个数据库对象,返回的是数据字典
        try:
            with open(contants.uid_list_dir, 'r') as file:
                cls.uid_list = file.readlines()
        except FileNotFoundError as e:
            cls.logger.error("该文件不存在!!")

    def setUp(self):
        pass

    @data(*cases)
    def test_verified_user_auth(self,case):
        self.logger.info("开始执行{0}模块的第{1}条用例:{2}".format(case.module, case.case_id, case.title))
        if json.loads(case.data)["uid"] == "${uid}":
            global count
            self.uid = str(self.uid_list[count])[:-1]

            count += 1
            setattr(context.Context, 'uid', self.uid)
            self.logger.info("***********",getattr(context.Context, 'uid'))
        if json.loads(case.data)["cre_id"] == "${cre_id}":
            get_cre_id()
Ejemplo n.º 26
0
class RechargeTest(unittest.TestCase):
    do_excel = DoExcel(contants.case_file)  # 传入cases.xlsx
    cases = do_excel.get_cases('recharge')

    @classmethod
    def setUpClass(cls):  # 每个测试类里面去运行的操作放到类方法里面
        print("\n这是一个类方法")
        cls.request = Request()  # 实例化对象

    def setUp(self):  # 每个测试方法里面去运行的操作放到类方法里面
        print("这是一个setUP")
        pass

    @data(*cases)
    def test_recharge(self, case):
        print("开始执行第{0}用例".format(case.id))
        # 使用封装好的request 来完成请求
        resp = self.request.request(case.method, case.url, case.data)
        # 将返回结果和期望结果进行匹配
        try:
            self.assertEqual(case.expected,
                             resp.json()['code'], "recharge error ")
            # 一致就写入Excel的结果为PASS,并且
            self.do_excel.write_result('recharge', case.id + 1, resp.text,
                                       'PASS')
            print("第{0}用例执行结果:PASS".format(case.id))
        except AssertionError as e:
            self.do_excel.write_result('recharge', case.id + 1, resp.text,
                                       'FAIL')
            print("第{0}用例执行结果:FAIL".format(case.id))
            raise e

    @classmethod
    def tearDownClass(cls):
        cls.request.close()  # 关闭session
class TestVerifyUserAuth(unittest.TestCase):

    excel = DoExcel(case_files, 'verifyUserAuth')
    cases = excel.get_cases()

    @classmethod
    def setUpClass(cls):
        logger.info('前置操作,连接数据库')
        cls.mysql = DoMysql()
        warnings.simplefilter('ignore', ResourceWarning)

    @classmethod
    def tearDownClass(cls):
        cls.mysql.close_mysql()

    @data(*cases)
    def test_verifyUserAuth(self, case):
        logger.info("测试执行,测试用例的名称是{}".format(case.title))
        data = replace(case.data)
        resp = HttpRequests().Wshttps(case.url, data, case.method)
        try:
            self.assertEqual(case.expected, resp)
            if case.case_id == 1:
                code = CheckSql(self.mysql).query_mvcode(eval(data)['mobile'])
                setattr(Context, 'code', code)

            if case.case_id == 2:
                uuid = CheckSql(self.mysql).query_uuid(eval(data)['user_id'])
                setattr(Context, 'uuid', str(uuid))

            logger.info('测试通过,测试结果回写excel')
            self.excel.writeResult(case.case_id + 1, str(resp), 'PASS')
Ejemplo n.º 28
0
 def test_register(self, case):
     # 执行测试
     # global TestResult
     # global token  # 声明全局变量
     method = case['Method']
     url = case['Url']
     param = eval(case['Params'])
     h = {'token': jianquan()}
     # 3.发起测试
     my_log.info('----正在测试{}模块第{}条测试用例:{}----'.format(
         case['Module'], case['CaseID'], case['Title']))
     my_log.info('测试数据是:{}'.format(case))
     resp = HttpRequest().http_request(method, url, param=param, headers=h)
     try:
         self.assertEqual(case['ExpectedResult'], resp.text)
         TestResult = 'Pass'
     except Exception as e:
         TestResult = 'Failed'
         my_log.error('注册失败:{}'.format(e))
         raise e  # 将异常抛出
     finally:
         # 写回结果
         t = DoExcel(case_path, 'login')
         t.write_back(case['CaseID'] + 1, 8, resp.text)  # 写回实际结果
         t.write_back(case['CaseID'] + 1, 9, TestResult)  # 写回测试结论
     my_log.info('实际结果是:{}'.format(resp.text))
Ejemplo n.º 29
0
class TestHttpRequest(unittest.TestCase):
    def setUp(self):
        self.t = DoExcel(project_path.test_data_path,
                         'test_data')  # 操作Excel的实例
        # print("开始测试啦")
        logger.info("开始执行测试啦")

    @data(*test_data)
    def test_http_request(self, a):
        # print("测试数据是:",a)
        # print("目前正在执行第%s条用例"%a[0])
        logger.info("测试数据是:{0}".format(a))
        logger.info("目前正在执行第%s条用例" % a[0])
        global COOKIES
        # IP+a[4]  ip地址与uri的拼接
        res = HttpRequest(IP + a[4], a[5]).http_request(a[3], cookies=COOKIES)
        if res.cookies != {}:  # 判断长度或者是判断是否为空{}
            COOKIES = res.cookies  # 只有登录才会产生cookies
        # print(res.json())
        # 检查数据库
        # eval(a[6])
        print(a[7]['sql_data'])
        print(type(a[7]['sql_data']))
        sql_result = DoMysql().do_mysql(a[7]['sql'], (str(a[7]['sql_data']), ))
        try:
            self.assertEqual(str(sql_result), a[7]['expected'])
            check_sql_result = 'PASS'
        except AssertionError as e:
            check_sql_result = 'FAIL'
            raise e
        finally:
            self.t.write_data(a[0] + 1, 2, str(sql_result), check_sql_result)

        try:
            self.assertEqual(str(a[6]), res.json()['code'])
            result = 'PASS'
            # self.t.write_data(a[0]+1,str(res.json()),test_result)
        except AssertionError as e:
            result = 'Fail'
            # self.t.write_data(a[0]+1,str(res.json()),test_result)
            raise e  # 跟return一样 中断代码
        finally:  #
            self.t.write_data(a[0] + 1, 1, str(res.json()), result)

    def tearDown(self):
        # print("结束测试了")
        logger.info("结束测试了")
class TestApiMethod(unittest.TestCase):
    '这是测试接口的类'
    do_excel = DoExcel(contants.excel_file)  # 传入excel
    cases_login = do_excel.read_excel("login")
    cases_register = do_excel.read_excel("register")

    request = Request()

    def setUp(self):
        # self.write_register = do_excel.write_excel("register")  # 创建一个对象写入
        # self.write_register = do_excel.write_excel("login")  # 创建一个对象写入
        my_log.info("开始执行用例")

    def tearDown(self):
        my_log.info("用例执行结束")

    @data(*cases_register)
    def test_register(self, case):  # 测试注册
        my_log.info("开始执行第{}条用例: {}".format(case.case_id, case.title))
        my_log.info('url:{}'.format(case.url))
        my_log.info('data:{}'.format(case.data))
        my_log.info('method:{}'.format(case.method))
        my_log.info('expected:{}'.format(case.expected))
        result = self.request.request(case.method, case.url, case.data)
        try:
            self.assertEqual(case.expected, result.text)
            self.do_excel.write_excel(case.case_id + 1, result.text,
                                      "Pass")  # 写入测试实际结果
            # TestResult = "Pass"
        except AssertionError as e:
            self.do_excel.write_excel(case.case_id + 1, result.text,
                                      "Failed")  # 写入测试实际结果
            # TestResult = "Failed"
            my_log.error("断言出错了".format(e))
            raise e
        # finally:
        #     self.do_excel.write_excel(case.case_id+1, result.text, TestResult)  # 写入测试实际结果
        #     my_log.info('注册的结果:{}'.format(result))

    @data(*cases_login)
    def test_login(self, case):  # 测试登陆
        my_log.info("开始执行第{}条用例: {}".format(case.case_id, case.title))
        my_log.info('url:{}'.format(case.url))
        my_log.info('data:{}'.format(case.data))
        my_log.info('method:{}'.format(case.method))
        my_log.info('expected:{}'.format(case.expected))
        result = self.request.request(case.method, case.url, case.data)
        try:
            self.assertEqual(case.expected, result.text)
            self.do_excel.write_excel(case.case_id + 1, result.text,
                                      "Pass")  # 写入测试实际结果
            # TestResult = "Pass"
        except AssertionError as e:
            self.do_excel.write_excel(case.case_id + 1, result.text,
                                      "Failed")  # 写入测试实际结果
            # TestResult = "Failed"
            my_log.error("断言出错了".format(e))
            raise e