python接口自動化第十篇--測試用例篇

說明:以上9篇文章是爲自動化框架作準備,接下來開始記錄測試用例篇,test case部分

這裏簡單介紹下test case 的大概框架,具體項目內容需要和實際業務關聯

import configparser
import json

import os
import unittest



from TeacherWebsite.common.config_handler import config
from TeacherWebsite.common.excel_handler import ExcelHandler
from TeacherWebsite.common.logger_handler import logger
from TeacherWebsite.common.requests_handler import RequestsHandler
from TeacherWebsite.libs.ddt import ddt, data
from TeacherWebsite.setting.constant import p_path


@ddt
class TestLogin(unittest.TestCase):
    # 通過讀取配置文件得到cases.xlxs
    file_name = config.read('excel', 'file_name')
    file_path = os.path.join(p_path.DATA_PATH,file_name)#獲取整個路徑

    #獲取sheet_name
    sheet_name =config.read('excel', 'login_sheet')
    # 讀取excel數據(測試數據)
    test_data = ExcelHandler(file_path).read(sheet_name)
    req = RequestsHandler()
    #獲取配置文件的url
    url = config.read('http','base_url_3')
    #獲取配置文件的headers

    cf = configparser.RawConfigParser()
    cf.read('../setting/config.ini')
    headers = cf.get('http','headers')

    print()
    #@classmethod不需要每次進入測試用例數據之前再執行初始化一次
    @classmethod
    def setUpClass(cls):
        cls.req = RequestsHandler()#作爲一個類屬性,每次都會初始化
        cls.logger = logger

    @classmethod
    def tearDownClass(cls):
        pass


    def setUp(self): #前置條件,測試用例方法之前自動運行setup裏面的程序
        pass

    def tearDown(self):##後置條件,測試用例方法之後自動運行tearDown裏面的程序
        pass
#以上都是前置條件前置條件

 

1、以上是爲了前置條件作準備、比如讀取測試數據的路徑啊,req(接口驅動)的路徑之類的,讀取配置文件等等、headers讀取,這裏邊因爲我的header轉義問題,暫時先這麼寫入,後續可以將headers可以寫入Excel文件裏邊

導入的時候一定要看準導入路徑

2、寫入接口

    @data(*test_data)#一定要加'*'
    def test_login(self,test_info):#test_info是接收測試數據
        #調用requests模塊訪問接口
        res = self.req.json(test_info['method'],
                            self.url,
                            json = test_info['data'],
                            headers = eval(self.headers))#類屬性能通過實例去訪問

        print(res)
        try:
            self.assertEqual(json.loads(test_info['expected']),res['msg'])
    #json.loads:json 轉化爲字典,轉化就是爲了方便對照結果
    # JsonDecodeerror 說明你用了一個非法的字符串方式,要用雙引號來包裝,外邊用單引號(在Excel 裏邊將該字段用雙引號闊起來就成,比如"系統繁忙")

            #寫回excel,靜態方法
            self.logger.info('斷言成功')#日誌記錄
            ExcelHandler.write(self.file_path,
                               self.sheet_name,
                               test_info['caseid']+1,
                               2,
                               'pass')
        except AssertionError as e:
            #寫入斷言失敗
            self.logger.error('斷言失敗')#日誌記錄
            ExcelHandler.write(self.file_path,
                               self.sheet_name,
                               test_info['caseid'] + 1,
                               2,
                               'failed')# 2是表示第二列爲了以後測試方便,第二列就寫入測試結果用
            raise e #拋出異常


#寫回Excel 不是必須的,這裏是爲了靈活展示Excel的操作,因爲我們在斷言的時候會寫入到測試報告裏

 

這裏邊try 函數是寫回的函數,可以不用寫在代碼裏邊

讀取測試數據的方式最好使用字典

Excelhandler:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章