二、pymysql+requests+pytest
接著上篇(1)中內容繼續更新
(三)、pytest
1、類名 TestXxx、方法名test_xxx
class TestLogin: def test_a(self): # 以 test 開頭的測試函式 print("test_a") assert 1 # 斷言成功 def test_b(self): print("test_b") assert 0 # 斷言失敗 # 執行方式, 終端命令列中 輸入 pytest 檔名 # 如果想讓命令列支援列印 需要使用 -s 引數, 具體用法: pytest -s 檔名 # 執行結果: .表示透過 F表示失敗
2、setup和teardown
class TestLogin: # 函式級初始化方法 def setup(self): print("---setup---") # 函式級結束 def teardown(self): print("---teardown---") def test_a(self): print("test_a") assert 1 # 斷言成功 def test_b(self): print("test_b") assert 0 # 斷言失敗 # -------------------結果----------------------------------- test_setup和teardown[39].py ---setup--- # 第1次執行 setup test_a .---teardown--- # 第1次執行 teardown ---setup--- # 第2次執行 setup test_b F---teardown--- # 第2次執行 teardown
3、配置檔案
-
-
將測試指令碼放到 scripts 中
-
pytest 的配置檔案放在自動化專案目錄下
-
配置檔名稱為 pytest.ini
-
pytest.ini 第一行的內容為 [pytest] , 後面逐行寫具體的配置引數
-
[pytest] addopts = -s --html=report1/report1.html testpaths = ./scripts python_files = test_*.py python_classes = Test* python_functions = test_*
[pytest]:這是配置檔案的頭部,表示這是 pytest 的配置部分。 addopts = -s --html=report1/report1.html: addopts 表示新增額外的選項。 -s:表示輸出所有的 print 語句,方便在執行測試時可以看到輸出資訊。 --html=report1/report1.html:表示生成 HTML 格式的測試報告,儲存在 report1 目錄下的 report1.html 檔案中。這個選項是透過 pytest-html 外掛提供的功能來生成 HTML 報告的。 testpaths = ./scripts:指定測試指令碼所在的路徑為當前目錄下的 scripts 資料夾。這意味著 pytest 將在 ./scripts 目錄中查詢測試檔案來執行測試用例。 python_files = test_*.py:指定測試檔案的命名規則,只有符合 test_*.py 格式的檔案才會被 pytest 當做測試檔案執行其中的測試用例。 python_classes = Test*:指定測試類的命名規則,只有以 Test 開頭的測試類才會被 pytest 當做測試類執行其中的測試用例。 python_functions = test_*:指定測試函式的命名規則,只有以 test_ 開頭的測試函式才會被 pytest 當做測試用例執行。
4、資料引數化
@pytest.mark.parametrize("引數名", 引數值)
引數對應的值: 型別必須為可迭代的型別, 一般使用 list
import pytest class TestLogin: @pytest.mark.parametrize("params", [{"username": "zhangsan", "password": "111"}, {"username": "lisi", "password": "222"}]) def test_a(self, params): print(params) print(params["username"]) print(params["password"]) #----------------------結果------------------------------------------- test_login[43].py {'username': 'zhangsan', 'password': '111'} zhangsan 111 .{'username': 'lisi', 'password': '222'} lisi 222 .
引數化後, 有幾組引數, 測試函式就好執行幾次。
5、測試報告外掛
# [推薦安裝1.21.1的版本]命令列輸入 pip install pytest-html==1.21.1 校驗方式 pip list
三、介面自動化框架實現
--api # 封裝請求 --scripts # 編寫測試指令碼 --data # 存放測試資料 --utils # 存放工具類 --report # 存放生成的測試報告 --app.py # 存放常量 --pytest.ini # pytest的配置