網站首頁 編程語言 正文
前言
說到配置,大家可能想到的是不經常更改的內容,比如Django里的settings.py文件,或者我們做自動化的時候,把測試環境的域名和正式環境的域名放到一個配置文件里,所有的接口都從這個文件里讀取。這樣,如果有一天,我們的域名變了,我們只需要更改配置里的域名就可以了。pytest里也有幾個配置文件。
pytest.ini:pytest的主配置文件,可以改變pytest的默認行為,有很多可配置的選項。
conftest.py:是本地的插件庫,其中的hook函數和fixture將作用于該文件所在的目錄以及所有子目錄。
init.py:每個測試子目錄都包含該文件時,那么在多個測試目錄中可以出現同名測試文件。
tox.ini:它與pytest.ini類似,只不過是tox的配置文件,你可以把pytest的配置都寫在tox.ini里,這樣就不用同時使用tox.ini和pytest.ini兩個文件
本文只談pytest.ini的使用
pytest.ini的內容構成
先看一個簡單的示例,這個只展示了配置文件中的三個配置項,更多配置項可以查看https://www.jb51.net/article/255567.htm
配置項markers
先談markers,它的作用是做注冊標記,防止拼寫錯誤。比如把@pytest.mark.smoke拼成@pytest.mark.somke,默認情況下。這不會引起程序錯誤。pytest會以為這是你創建的另一個標記。為了避免拼寫錯誤。可以在pytest.ini文件里注冊標記
[pytest] markers = smoke: Run the smoke test functions for tasks project get: Run the test functions that test tasks.get()
import pytest def inc(x): return x + 1 @pytest.mark.smoke def test_answer(): assert inc(3) == 55 @pytest.mark.post def test_answer1(): assert inc(4) == 5
標記注冊好后,可以通過pytest --markers來查看
如果我們在執行時,故意寫錯mark標簽,如把smoke故意寫錯了,也沒有報錯,只是給我們一個警告,只需要我們在ini里注冊下就不會有警告了
如果使用了–strict選項,遇到拼寫錯誤的標記或未注冊的標記就會報錯。并且在pytest.ini里注冊了標記,但是沒有函數使用該標記,也會報錯。
配置項testpaths
testpaths指示pytest去哪里訪問。testpaths是一系列相對于根目錄的路徑,用于限定測試用例的搜索范圍。只有在pytest未指定文件目錄參數或測試用例標識符時,該選項才有作用
[pytest] testpaths = test_001
配置項addopts
更改默認命令行選項
pytest用命令行運行時,有時候需要經常要用到某些參數,又不想重復輸入,這時可以使用pytest.ini文件里的addopts設置
[pytest] addopts=-vqs
編寫的用例
from selenium import webdriver def testOpenUrl(): try: driver = webdriver.Firefox() # 打開瀏覽器 driver.get('http://www.baidu.com') # 訪問百度 title = driver.title # 獲取百度首頁的title assert title == '百度一下,你就知道' # 斷言 except AssertionError: raise AssertionError('斷言失敗!') driver.quit()
-v:pytest -v 說明:可以輸出用例更加詳細的執行信息,比如用例所在的文件及用例名稱等
-s:pytest -s 說明:輸入我們用例中的調式信息,比如print的打印信息等,我們在上面用例8行加上一句 print(driver.title),我們再運行一下我們的用例看看
-m:pytest -m ”標記“ 說明:執行特定的測試用例。修改下上面的用例代碼
from selenium import webdriver import pytest @pytest.mark.run_this_testcase #添加mark的標簽 def testOpenUrl(): try: driver = webdriver.Firefox() # 打開瀏覽器 driver.get('http://www.baidu.com') # 訪問百度 title = driver.title # 獲取百度首頁的title print(driver.title) assert title == '百度一下,你就知道' # 斷言 except AssertionError: raise AssertionError('斷言失敗!') driver.quit() def testBaidu(): driver = webdriver.Firefox() # 打開瀏覽器 driver.get('http://www.baidu.com') # 訪問百度 title = driver.title # 獲取百度首頁的title assert title == '百度一下,你就知道' # 斷言
-q:pytest -q 說明:簡化控制臺的輸出,可以看出輸出信息和上面的結果都不一樣, 下圖中有兩個…點代替了pass結果
-k:pytest -k “關鍵字” 說明:執行用例包含“關鍵字”的用例
–tb=style:屏蔽測試用例執行輸出的回溯信息,可以簡化用例失敗時的輸出信息。style可以是 on,line,short,具體區別請自行體驗。如使用pytest --tb=no
更多pytest參數可以參考文章
https://www.jb51.net/article/164071.htm
https://www.jb51.net/article/164074.htm
參考鏈接:
https://www.jb51.net/article/255567.htm
原文鏈接:https://blog.csdn.net/u011035397/article/details/109550202
相關推薦
- 2022-04-08 從頭學習C語言之switch語句和分支嵌套_C 語言
- 2023-01-07 Flutter?Widget開發之Focus組件圖文詳解_Android
- 2022-06-14 golang并發安全及讀寫互斥鎖的示例分析_Golang
- 2023-03-13 Python實現柵欄密碼的加密解密方法詳解_python
- 2022-03-14 @Builder 實際參數列表和形式參數列表長度不同
- 2022-04-22 golang數據類型【字符類型】以及fmt的輸出輸入、UTF-8 和 Unicode 有何區別?
- 2022-06-04 python函數的兩種嵌套方法使用_python
- 2022-05-02 Python實現連點器的示例代碼_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支