介面自動化-python+requests+pytest+csv+yaml

luckydays發表於2021-09-03

本套程式碼和邏輯 是本人的勞動成果,如果有轉載需要標註,

非常適合公司做專案的同學!!!小白也可以學哦!

 

1.專案目錄

 

 2.公共方法的封裝

2.1如果不用配置檔案 可以使用這個方法進行封裝--但是有一定的缺陷!!!!

import requests

METHODS = ['GET', 'POST', 'HEAD', 'TRACE', 'PUT', 'DELETE', 'OPTIONS', 'CONNECT', 'PATCH']


# 可以不使用----

class HTTPClient (object):
    def __init__(self, url, method='GET', headers=None, cookies=None):
        """headers: 字典。 例:headers={'Content_Type':'text/html'},cookies也是字典。"""
        self.url = url
        self.session = requests.session ()
        self.method = method.upper ()
        if self.method not in METHODS:
            raise Exception ('不支援的method:{0},請檢查傳入引數!'.format (self.method))

        self.set_headers (headers)
        self.set_cookies (cookies)

    def set_headers(self, headers):
        if headers:
            self.session.headers.update (headers)

    def set_cookies(self, cookies):
        if cookies:
            self.session.cookies.update (cookies)

    def send(self, params=None, data=None, **kwargs):

        # urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
        response = self.session.request (method=self.method, url=self.url, params=params, data=data, verify=False,
                                         **kwargs)
        response.encoding = 'utf-8'
        # logger.debug('{0} {1}'.format(self.method, self.url))
        # logger.debug('請求成功: {0} {1}'.format(response, response.text))
        return response

 2.2為什麼要用yaml去做全域性資料的配置

   看我部落格yaml的好處   https://www.cnblogs.com/zsplovezsp/p/12443036.html

 3.測試用例和測試資料的格式

 

 

 

 4.其他的就很簡單了就不做,描述了--如果有想學python和測試開發,測試自動化的可以多關注一下

5,.pytest常用的方法

pytest常用的方法和原理

1.pytest的原理

    1. pytest外掛基於pluggy模組;pluggy有三個重要概念:HookspecMarker(用來定義hook函式),HookimplMarker(用來實現鉤子函式完成外掛的邏輯)和PluginManager(用來負責註冊和呼叫外掛的管理器);

 

2.pytest的規定

    1. 所有規範和實現均遵循pytest_字首命名約定,從而易於區分和查詢

3.載入外掛的方式

    1. 內建外掛:從程式碼內部的_pytest目錄載入
    2. 外部外掛(第三方外掛):通過setuptools entry points機制發現的第三方外掛模組
    3.  conftest.py形式的本地外掛:測試目錄下的自動模組發現機制

4.pytest外掛的順序

1.通過掃描命令列中的選項並阻止該外掛被載入(即使內建外掛也可以通過這種方式被阻止)。這是在正常的命令列解析之前發生的。-p no:name

2.載入所有的內建外掛

3.通過預掃描命令列中,-p name選項,在實際解析命令列之前載入指定的外掛

4.載入所有通過setuptools入口點註冊的外掛(可設定環境變數PYTEST_DISABLE_PLUGIN_AUTOLOAD進行禁用,僅載入明確指定的外掛)

5.載入通過環境變數PYTEST_PLUGINS指定的所有外掛

6.載入通過命令列推斷出的所有confest.py檔案:

-如果未指定測試路徑,則使用當前dir作為測試路徑

-如果存在指定測試路徑,那麼載入conftest.py和test */conftest.py,相對於第一個測試路徑

注意,pytest是找不到藏在更深的子目錄裡的confest.py檔案的,最好將confest.py儲存在頂級的測試或者專案的根目錄

7.通過在confest.py檔案中的pytest_plugin指定的變數,遞迴載入所有的外掛

5.安裝路徑

    • pytest第三方外掛庫網站 https://docs.pytest.org/en/latest/plugins.html

 

 

    • PyPI下載 https://pypi.python.org(可以使用pytest、pytest-、-pytest作為搜尋關鍵字來搜尋外掛)

 6.常用的外掛簡單描述

    • pytest-rerunfailures:失敗用例重跑
    • pytest-html:生成xml/html格式的測試報告,儲存於使用者指定路徑
    • pytest-repeat:重複執行多次用例
    • pytest-assume:進行多次斷言
    • pytest-xdist:測試用例可以分散式執行,從而節省自動化測試時間
    • pytest-cov:覆蓋率報告,顯示哪些程式碼行已經測試過,哪些還沒有
    • pytest-instafail:在測試執行期間報告失敗
    • pytest-timeout:根據函式標記或全域性定義進行超時測試
    • pytest-ordering:設定執行順序。對於一些上下文依賴的,有時候可能需要設定一些特定執行順序
    • pytest-cache:重跑上次失敗的用例
    • pytest-autochecklog:自動生成測試日誌
    • pytest-sugar:改變預設外觀,新增了一個進度條

 

6.---------------------------------------------------

如果有想要程式碼和了解更多的可以加   _99Rampant

 

相關文章