Exemple #1
0
    def post(self, url, data=None, headers=None, **kargs):
        logger.info("----执行post请求开始----")
        try:

            response = requests.post(url=url, data=data, headers=headers)
        except Exception as e:
            logger.error("执行post请求出错,请查看问题!原因: s%", e)
        return response
Exemple #2
0
    def get(self, url, params=None, headers=None, **kargs):
        logger.info("----执行get请求开始----")
        try:

            response = requests.get(url=url, params=params, headers=headers)
        except Exception as e:
            logger.error("执行get请求出错,请查看问题!原因: s%", e)
        return response
Exemple #3
0
class MyTestCase(unittest.TestCase):
    logger.info("----执行测试用例开始----")
    contents = []
    if len(contents) <= 0:
        logger.info("----读取excel用例数据----")
        casedata = excelData().getExcel()
        logger.info("----循环读取excel中每行数据开始----")
        for case in casedata:
            name = case
            listcase = casedata[name]
            for list in listcase:
                contents.append(list)
        logger.info("----excel用例数据读取完成----")

    @data(*contents)
    @unpack
    def test_get_commonapi(self, url, body, header, method, method_type,
                           expect, jsonpaths, dependency):
        logger.info("----用例数据拆包开始----")
        print(url + "-" + str(body) + "-" + str(header) + "-" + method + "-" +
              method_type + "-" + expect + "-" + jsonpaths + "-" + dependency)
        common = request_Common()
        logger.info("----替换body中的空格换行特殊字符开始----")
        body = body.replace('\r', '').replace('\n', '').replace(
            '\t', '') if body is not None else ""

        logger.info("----转换存在可变变量开始----")
        # 假如body中存在变量获取符号,调用convertBody重新对变量进行转化
        body = operatorConvert().convertBody(
            body) if body.find('$') >= 0 else body
        header = operatorConvert().convertBody(header) if (
            header is not None and header.find('$') >= 0) else header
        header = "" if header is None else header
        res = common.request(method, url, method_type, body, header)

        # 判断dependency是否有值需要存储

        if len(res.content) > 0 and dependency.find('/') < 0:
            depend[dependency] = res.content

        # 获取请求返回值
        resjson = json.loads(res.content)

        # 获得预期jsonpath路径下的值
        result = jsonpath.jsonpath(resjson, expr=jsonpaths)

        # code = res.status_code
        # print(code)
        # 断言预期值和实际返回值对比
        self.assertEqual(expect.strip(), str(result[0]))
    def request(self,
                requestMethod,
                requestUrl,
                paramsType,
                requestData=None,
                headers=None):
        logger.info("----执行统一请求方法开始----")
        # 判断requestMethod是否是post
        if requestMethod.lower() == "post":
            # paramsType是form表单提交
            if paramsType == "form":
                response = getpost().post(url=requestUrl,
                                          data=requestData,
                                          headers=headers)
                return response
            # json提交
            elif paramsType == 'json':
                requestData = eval(requestData)
                requestData = json.dumps(requestData)
                headers = eval(headers)
                # headers = json.dumps(headers)
                response = getpost().post(url=requestUrl,
                                          data=requestData,
                                          headers=headers)
                return response

        # 判断requestMethod是否是get
        elif requestMethod == "get":
            if paramsType == "url":

                request_url = "%s%s" % (requestUrl, "" if requestData is None
                                        else requestData)
                headers = eval(headers) if headers != '' else headers
                response = getpost().get(url=request_url, headers=headers)

                print(response)
                return response
            elif paramsType == "params":
                response = getpost().get(url=requestUrl,
                                         params=requestData,
                                         headers=headers)
                return response
Exemple #5
0
    def test_get_commonapi(self, url, body, header, method, method_type,
                           expect, jsonpaths, dependency):
        logger.info("----用例数据拆包开始----")
        print(url + "-" + str(body) + "-" + str(header) + "-" + method + "-" +
              method_type + "-" + expect + "-" + jsonpaths + "-" + dependency)
        common = request_Common()
        logger.info("----替换body中的空格换行特殊字符开始----")
        body = body.replace('\r', '').replace('\n', '').replace(
            '\t', '') if body is not None else ""

        logger.info("----转换存在可变变量开始----")
        # 假如body中存在变量获取符号,调用convertBody重新对变量进行转化
        body = operatorConvert().convertBody(
            body) if body.find('$') >= 0 else body
        header = operatorConvert().convertBody(header) if (
            header is not None and header.find('$') >= 0) else header
        header = "" if header is None else header
        res = common.request(method, url, method_type, body, header)

        # 判断dependency是否有值需要存储

        if len(res.content) > 0 and dependency.find('/') < 0:
            depend[dependency] = res.content

        # 获取请求返回值
        resjson = json.loads(res.content)

        # 获得预期jsonpath路径下的值
        result = jsonpath.jsonpath(resjson, expr=jsonpaths)

        # code = res.status_code
        # print(code)
        # 断言预期值和实际返回值对比
        self.assertEqual(expect.strip(), str(result[0]))
Exemple #6
0
    def getExcel(self):
        logger.info("----遍历用例目录读取用例excel开始----")
        file_name_list = os.walk(test_case_path, topdown=True)
        dict = {}

        for root, dirs, file_name in file_name_list:
            try:
                for name in file_name:
                    print(os.path.join(root, name))
                    logger.info("----读取用例excel中sheet开始----")
                    workbook = load_workbook(os.path.join(root, name))
                    sheet = workbook['Sheet1']

                    lists = []
                    rows_sheet = sheet.iter_rows()
                    for item in rows_sheet:
                        if item[0].value == "url":
                            continue
                        list = []
                        for col in item:
                            logger.info("----遍历每一列加入到一行测试数据----")
                            list.append(col.value)
                        lists.append(list)
                    dict[name] = lists
            except Exception as e:
                logger.error("历用例目录读取用例excel执行出错,请查看问题!原因: s%", e)
        print(dict)

        return dict
Exemple #7
0
    def send_mail(self, path):
        logger.info("----测试报告邮件开始发送流程----")

        logger.info("测试报告邮件读取生成html报告页面")
        try:
            logger.info("----测试报告邮件开始打开html文档----")
            f = open(path, 'rb')
            logger.info("----测试报告邮件开始读取html文档----")
            mail_body = f.read()

            f.close()
            logger.info("----测试报告邮件读取邮件发送配置----")
            host = emailhost
            # 设置发件服务器地址
            port = ports
            # 设置发件服务器端口号。注意,这里有SSL和非SSL两种形式,现在一般是SSL方式
            sender = senders
            # 设置发件邮箱,一定要自己注册的邮箱
            pwd = password
            # 设置发件邮箱的授权码密码,根据163邮箱提示,登录第三方邮件客户端需要授权码
            receiver = receivers
            # 设置邮件接收人,可以是QQ邮箱
            # 设置邮件正文,这里是支持HTML的
            msg = MIMEText(mail_body, "HTML", "utf-8")
            # 设置正文为符合邮件格式的HTML内容
            msg['subject'] = 'ddt自动化测试报告'
            # 设置邮件标题
            msg['from'] = sender
            # 设置发送人
            msg['to'] = msgto
            # 设置接收人

            s = smtplib.SMTP_SSL(host, port)
            # 注意!如果是使用SSL端口,这里就要改为SMTP_SSL
            logger.info("----测试报告邮件登录smtp----")
            s.login(sender, pwd)
            # 登陆邮箱
            logger.info("----测试报告邮件开始发邮件----")
            s.sendmail(sender, receiver.split(","), msg.as_string())
            # 发送邮件!
            print('Done.sent email success')
            logger.info("----测试报告邮件发送成功----")
        except Exception as e:
            print('Error.sent email fail')
            logger.info("----测试报告邮件发送失败----原因:s%", e)