Python自动化接口测试框架——封装Get与Post请求方法(一)

Python自动化接口测试框架(一)

  • 前言
    • 框架结构
    • 整体的流程
    • 封装get和post请求
    • RunAll 类
    • 自动生成报告
    • 自动发邮件

前言

发布博客只是记录下自己对自动化测试框架的一个经历过程,框架整体是有Python+unittest框架完成的,一开始也是网上看看别人的框架代码,然后下载下来一脸懵,各种报错,不知道从哪开始,逐渐也是一一解析,最后完成了适合自己的自动化框架。
注:框架部分引用于互联网分享,若有雷同,就是我抄袭的╭(╯^╰)╮

框架结构

Python自动化接口测试框架——封装Get与Post请求方法(一)_第1张图片
common:是一些公共的封装方法
HttpTestReport:是存放自动生成的html测试报告
Log:日志及日志存放
Testcase:测试脚本
TtestFile:测试用例.xml存放位置

整体的流程

1.config.ini中配置相关属性,由common内各种方法调用,
2.手工按模板编写测试用例(一般情况下不需要修改脚本,只需要修改脚本数量与用例数量符合)
3.runall调用封装好的方法,自动调取测试用例文件给测试脚本
4.自动生成测试报告
5.自动发邮件到qq邮箱。

封装get和post请求

代码片.

# -- coding: utf-8 --
import requests
import json


class Webrequests():
    def get(self,url,data,headers):     
        try:
            r = requests.get(url,params=data,headers=headers)
            r.encoding = 'utf-8'   
            json_r = r.json()
            print("Test执行结果:",json_r)
            return json_r
        except BaseException as e:
            print("请求失败!",str(e))
    def post(self,url,data,headers):    
        try:
            r = requests.post(url,data=data,headers=headers)
            r.encoding = 'utf-8'
            json_r = r.json()
            print("Test执行结果:",json_r)
            return json_r
        except BaseException as e:
            print("请求失败!",str(e))
    def post_json(self,url,data,headers):   
        try:
            data = json.dumps(data)  
            r = requests.post(url,data=data,headers=headers)
            r.encoding = 'utf-8'
            json_r = r.json()
            print("Test执行结果:",json_r)
            return json_r
        except BaseException as e:
            print("请求失败!",str(e))

    def run_main(self, method,url,data,headers):
        result = None
        if method == 'post':
            result = self.post(url,data,headers)
        elif method == 'get':
            result = self.get(url,data,headers)
        elif method == 'post_json':
            result = self.post_json(url, data, headers)
        else:
            print("method值错误!!!")
        return result

外界调用的时候,直接调取run_main方法,传相关参数

第一章先写到这里吧,后期逐渐更新,给大家看下运行的run类,以及生成的报告

RunAll 类

class AllTest:
    def __init__(self):
        log.info("*********测试执行开始*********")
    def run(self):
        try:
            case_dir = os.getcwd() + '\Testcase'       
            testcase = unittest.TestSuite()  
            discover = unittest.defaultTestLoader.discover(case_dir, pattern='test*.py', top_level_dir=None)
            for test_suit in discover:
                for test_case in test_suit:
                    testcase.addTest(test_case)
            report_path = os.getcwd() + '\HttpTestReport'
            now = time.strftime('%Y-%m-%d %H%M%S')
            fp = open(os.getcwd() + '\HttpTestReport\HttpTest' + now + '.html', 'wb')
            runner = HTMLTestRunner.HTMLTestRunner(stream=fp, title=u'自动化测试报告', description=u'测试用例执行情况:', tester=u"测试员")
            runner.run(testcase)
            fp.close()
            print("测试报告生成成功,请查收···")
            print("%s" % report_path)
            log.info("测试报告生成成功,请查收···")
            log.info("%s" % report_path)
            email_name = re.findall(r"name='(.+?)'>",str(fp))
            report_name = email_name[0][-30:]
            if on_off == 'on':
                send_mail.send(email_name[0],report_name)
                log.info("测试报告邮件已发送成功,请查收···")
            else:
                log.info("测试报告邮件发送失败···")
        except Exception as ex:
            print("测试报告生成失败。错误内容:%s"%ex)

自动生成报告

Python自动化接口测试框架——封装Get与Post请求方法(一)_第2张图片
这是由HTMLTestRunner生成的报告,这是优化过得,汉化显示,也方便阅读美观。

自动发邮件

Python自动化接口测试框架——封装Get与Post请求方法(一)_第3张图片
附带了html的测试报告

我不是大佬,只是一个努力钻研问题的小萌新,大家如果感兴趣,我会继续后面分享具体的设计步骤以及思路。

你可能感兴趣的:(自动化测试框架)