python+requests接口自動化完整項目設計源碼

 前言html

有不少小夥伴吵着要完整的項目源碼,完整的項目屬於公司內部的代碼,這個是無法分享的,違反職業道德了,就算別人分享了,也只適用於本公司內部的業務。python

因此用例的代碼仍是得本身去一個個寫,我只能分享項目框架,只能幫大家到這了。mysql

 

1、項目結構sql

1.新建一個工程(必定要建立工程),工程名稱本身定義,如:yoyo_jiekouoracle

2.在工程的跟目錄新建一個腳本:run_main.py,用來執行所有用例框架

3.在工程下建立如下幾個pakage包:函數

--case:這個包放test開頭的測試用例,也能夠放一些封裝接口的方法,如:loginblog(若是封裝的接口比較多,也能夠單獨放一個包)測試

--common:這個包放一些公共的方法,如:讀取excel文件方法,讀取mysql、oracle,logger.py這個是封裝日誌的輸入加密

--config:cfg.ini這裏是配置文件,如郵箱的一些參數:收件人,發件人,密碼等,readConfig.py用於讀取配置文件spa

--logs:這裏存放日誌信息

--report:這裏存放測試報告

 

2、run_main

第一步:用discover方法加載全部的測試用例

1.cur_path這個參數是讀取當前這個腳本的真實路徑,也就是run_main.py的真實路徑

2.caseName="case"這個case是存放測試用例的文件夾,若是沒有的話,自動建立。若是想運行其它文件夾的用例,就改下caseName這個參數值

3.rule="test*.py"這個是匹配用例腳本名稱的規則,默認匹配test開頭的全部用例

 

第二步:生成HTML報告

1.把上一步加載到用例的參數傳入這個函數,測試報告的文件名稱默認report文件夾:reportName="report

2.若是沒有這個report文件夾也不要緊,能夠自動建立的

第三步:獲取最新的測試報告

1.若是第二步生成的測試報告加了時間戳,想找到最新的文件就用第三步

2.若是第二步不加時間戳,只是生成result.html,那這一步其實沒卵用,能夠忽略

(我的以爲報告用一個名稱result.html就行,新的自動覆蓋舊的)

第四步:發送測試報告到郵箱

1.像QQ郵箱這種ssl加密的就走SMTP_SSL,用受權碼登陸

2.其它郵箱就正常帳號密碼登陸,走SMTP

最後執行代碼

1.這裏郵箱的內容讀的配置文件

 

3、config配置

1.cfg.ini打開,這裏寫配置文件內容

2.用readConfig.py讀取配置文件

3.讀取的內容就是傳入第二步操做裏面須要調用郵箱的配置信息

 

3、logger

1.logger.py這個文件放到common目錄下,封裝日誌文件的讀取

2.日誌保存到logs文件夾

3.封裝代碼

# coding:utf-8
import logging, time
import os
# log_path是存放日誌的路徑
cur_path = os.path.dirname(os.path.realpath(__file__))
log_path = os.path.join(os.path.dirname(cur_path), 'logs')
# 若是不存在這個logs文件夾,就自動建立一個
if not os.path.exists(log_path):os.mkdir(log_path)

class Log():
    def __init__(self):
        # 文件的命名
        self.logname = os.path.join(log_path, '%s.log'%time.strftime('%Y_%m_%d'))
        self.logger = logging.getLogger()
        self.logger.setLevel(logging.DEBUG)
        # 日誌輸出格式
        self.formatter = logging.Formatter('[%(asctime)s] - %(filename)s] - %(levelname)s: %(message)s')

    def __console(self, level, message):
        # 建立一個FileHandler,用於寫到本地
        fh = logging.FileHandler(self.logname, 'a')  # 追加模式  這個是python2的
        # fh = logging.FileHandler(self.logname, 'a', encoding='utf-8')  # 這個是python3的
        fh.setLevel(logging.DEBUG)
        fh.setFormatter(self.formatter)
        self.logger.addHandler(fh)

        # 建立一個StreamHandler,用於輸出到控制檯
        ch = logging.StreamHandler()
        ch.setLevel(logging.DEBUG)
        ch.setFormatter(self.formatter)
        self.logger.addHandler(ch)

        if level == 'info':
            self.logger.info(message)
        elif level == 'debug':
            self.logger.debug(message)
        elif level == 'warning':
            self.logger.warning(message)
        elif level == 'error':
            self.logger.error(message)
        # 這兩行代碼是爲了不日誌輸出重複問題
        self.logger.removeHandler(ch)
        self.logger.removeHandler(fh)
        # 關閉打開的文件
        fh.close()

    def debug(self, message):
        self.__console('debug', message)

    def info(self, message):
        self.__console('info', message)

    def warning(self, message):
        self.__console('warning', message)

    def error(self, message):
        self.__console('error', message)

if __name__ == "__main__":
   log = Log()
   log.info("---測試開始----")
   log.info("操做步驟1,2,3")
   log.warning("----測試結束----")

 

4、case放用例

1.經常使用的接口,須要檢查被調用的單獨封裝處理,如登陸等

2.test開頭的用例

 

5、logs日誌查看

1.運行完後日志都會收集到logs文件夾以日期命名

 

6、生成測試報告

1.這裏調用的是HTMLTestRunner生成html的測試報告

 

 

7、發送報告到郵箱

1.運行run_main.py就會自動生成報告,而後發送到郵箱了

(這裏QQ郵箱的展現是有問題的,通常用企業郵箱的話,是能夠正常展現的)

 

(源代碼能夠經過如下連接購買,7.2章節能夠獲取下載地址)

 

---------------------------------python接口自動化完整版-------------------------

全書購買地址 https://yuedu.baidu.com/ebook/585ab168302b3169a45177232f60ddccda38e695


做者:上海-悠悠 QQ交流羣:588402570

也能夠關注下個人我的公衆號:

相關文章
相關標籤/搜索