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


一、項目結構

1.新建一個工程(一定要創建工程),工程名稱自己定義,如:yoyo_jiekou

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

3.在工程下創建以下幾個pakage包:

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

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

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

--logs:這里存放日志信息

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

 

二、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.這里郵箱的內容讀的配置文件

 

三、config配置

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

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

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("----測試結束----")

 

四、case放用例

1.常用的接口,需要檢查被調用的單獨封裝處理,如登錄等

2.test開頭的用例

 

五、logs日志查看

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

 

六、生成測試報告

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

 

 

七、發送報告到郵箱

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

(這里QQ郵箱的展示是有問題的,一般用企業郵箱的話,是可以正常展示的)

 

(源代碼可以通過以下鏈接購買,7.2章節可以獲取下載地址)

---------------------------------python接口自動化已出書-------------------------

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM