基於Python接口自動化測試框架+數據與代碼分離(進階篇)附源碼


  引言

  在上一篇《基於Python接口自動化測試框架(初級篇)附源碼》講過了接口自動化測試框架的搭建,最核心的模塊功能就是測試數據庫初始化,再來看看之前的框架結構:

 

 

 

  可以看出testcase下有很多測試用例,並且每個測試用例都寫了請求地址,請求參數,請求頭等相關數據,還有一些斷言的數據。如果接口很多的話,這樣每個case寫都要寫,導致后期工作量大,維護起來不方便。

  針對上述情況,引入python一個非常好用的第三方庫ddt,其作用就是數據驅動,將數據與代碼分離,可以把所有的接口相關的測試用例數據存放在excel里,然后維護一個API文件,這樣做就不需要寫很多case代碼。

 

  框架設計思路

1.大致處理流程:

 

2.接口自動化測試框架處理過程:

  1. 首先,測試數據初始化,維護的業務數據到數據庫中,也就是截圖中的第一步
  2. 第二步,用Excel維護一份接口測試用例數據(用例id、請求方法、請求參數、請求頭、請求類型、返回數據,測試結果等)。
  3. 測試框架只需寫一份調用API的代碼,讀取第二步的維護的接口測試數據,然后向被測系統發送請求,也就是圖中的第三步。
  4. 當調用接口的時候,會查詢數據庫,就是第四步。
  5. 測試框架根據接口返回的數據和Excel的數據進行比較,生成最終測試結果寫入Excel中,並且生成測試報告。

 

大致流程:初始化測試數據→讀取測試數據→發送請求→寫入測試結果→生成測試報告→發送測試郵件。

如圖:

 

  框架結構

 

 

這里就不重復介紹了,可以參考初級篇,對比一下。

運行程序:

...............
Time Elapsed: 0:00:01.106878
郵件發送成功!

測試報告:

 

  PS:右側那個餅圖是鼠標放上去自動會放大。

  郵件模塊

import os,sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
from config import setting
import smtplib
from main.newReport import new_report
import configparser
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart


def send_mail(file_new):
    """
    定義發送郵件
    :param file_new:
    :return: 成功:打印發送郵箱成功;失敗:返回失敗信息
    """
    f = open(file_new,'rb')
    mail_body = f.read()
    f.close()
    #發送附件
    con = configparser.ConfigParser()
    con.read(setting.TEST_CONFIG,encoding='utf-8')
    report = new_report(setting.TEST_REPORT)
    sendfile = open(report,'rb').read()
    # --------- 讀取config.ini配置文件 ---------------
    HOST = con.get("user","HOST_SERVER")
    SENDER = con.get("user","FROM")
    RECEIVER = con.get("user","TO")
    USER = con.get("user","user")
    PWD = con.get("user","password")
    SUBJECT = con.get("user","SUBJECT")

    att = MIMEText(sendfile,'base64','utf-8')
    att["Content-Type"] = 'application/octet-stream'
    att.add_header("Content-Disposition", "attachment", filename=("gbk", "", report))

    msg = MIMEMultipart('related')
    msg.attach(att)
    msgtext = MIMEText(mail_body,'html','utf-8')
    msg.attach(msgtext)
    msg['Subject'] = SUBJECT
    msg['from'] = SENDER
    msg['to'] = RECEIVER

    try:
        server = smtplib.SMTP()
        server.connect(HOST)
        server.starttls()
        server.login(USER,PWD)
        server.sendmail(SENDER,RECEIVER,msg.as_string())
        server.quit()
        print("郵件發送成功!")
    except Exception as  e:
        print("失敗: " + str(e))

  運行代碼后:

  Excel寫入測試結果

  報告和郵件都有了,再來看看測試結果回寫Excel的數據:

 

  結果和測試報告中結果一致。

  總結

  到此,接口自動化測試框架開發基本完成,本文主要講述利用ddt進行數據驅動,實現測試數據與測試代碼分開模式,以便提高可讀性、執行效率和降低維護成本。
  還有一點需要說明,這套測試用例中的接口基本上是沒有關聯關系的,如果有上下關聯的,就不能這樣寫了,不然第一個接口執行失敗,后面基本全部失敗。所以只適用於沒有上下依賴關系的接口測試。
  雖然代碼已經完成,還有一些細節的地方需要優化,比如日志、報告自動清理,定時發送郵件,Jenkins集成等等。

  附錄

  更多干貨:加入測試開發交流QQ群:696400122
  微信公眾號:全棧測試開發日記,
  CSDN地址:https://blog.csdn.net/liudinglong1989/article/details/104457379

 


免責聲明!

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



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