一、pytest基礎
阿新 • • 發佈:2021-08-02
一、 setup 和 teardown 操作
setup: 在測試函式或類之前執行, 完成準備工作,例如資料庫連線、數 據測試、開啟檔案等。
teardown: 在測試函式或類之後執行,完成收尾工作, 例如斷開資料庫 連線、回收記憶體資源。
二、編寫規則
1. 測試檔案以 test_ 開頭或以 _test結尾 2. 測試類以Test開頭, 並且不能帶有 init 方法 3. 測試函式以test_開頭 4. 斷言assert即可 5. 設定執行順序, @pytest.mark.run(order=1) 6. 全域性變數 @pytest.fixture() 引數scope session: 只執行一次 module: 在模組級別中只執行一次 class: 在類級別中只執行一次 function: 在函式界別中執行一次
三、 pytest.ini
pytest 配置檔案
1. 可以修改命名規範
示例:
[pytest]
python_files = test_*.py *_test.py
python_classes = Test* zz
python_functions = test_*
四、conftest.py:
- 名稱固定,不可修改
- conftest.py檔案和用例在同一目錄下,那麼conftest.py作用於整個目錄
- conftest.py 檔案所在目錄必須存在__init__.py 檔案
- 不能被其他目錄匯入
- 所有同目錄測試檔案執行前都會執行conftest.py 檔案
示例:
test_001.py
import pytest import requests # 示例 ![](https://img2020.cnblogs.com/blog/1440097/202108/1440097-20210802174906042-1650894010.png) #函式 def test_001(): print("執行測試用例001") # 測試類 def setup_module(): print("模組執行前****") def teardown_module(): print("模組執行後****") class Test002(): def setup_class(self): print("測試類執行前執行一次") def teardown_class(self): print("測試類執行後執行一次") def setup(self): print("用例執行前執行一次") def teardown(self): print("用例執行後執行一次") def test_003(self, gettoken): print("執行003--------%s" % gettoken) # 資料驅動, indata 還可以來自,excel 等資料容器,通過函式讀出來 indata = [['6', '1'], ['9', '0'], ['', '1'], ['zzz', '0']] @pytest.mark.parametrize("weaid, status", indata) # 將有返回值的漢 def test_004(self, weaid, status): data = { 'app' : 'weather.realtime', 'weaid' : weaid, 'ag' : 'today,futureDay,lifeIndex,futureHour', 'appkey' : '59762', 'sign' : '9e3a8cd9e31faaabcdb592085ab3dc57', 'format' : 'json', } response = requests.get("https://sapi.k780.com", data) res_json = response.json() print(weaid) assert res_json["success"] == status if __name__ == "__main__": # -s 返回列印資訊, --html 報告 需要安裝 pytest-html pytest.main(["-s", "--html=./reports/result.html"])
configtest.py
import pytest
# 全域性變數
@pytest.fixture()
def gettoken():
token = "xxx001"
return token
五、main引數
在pytest 中新增:
addopts = -s --html=./reports/result.html