pytest運行時參數說明,pytest詳解,pytest.ini詳解

一、Pytest簡介

1.pytest是一個非常成熟的全功能的Python測試框架,主要有一下幾個特點:
簡單靈活,容易上手,支持參數化
2.能夠支持簡單的單元測試和復雜的功能測試,還可以用來做selenium、appium等自動化測試,requests+pytest接口自動化測試
3.pytest具有很多第三方插件,并且可以自定義擴展,比較好用的如:
pytest-selenium(集成selenium)
pytest-html(完美html測試報告生成)
pytest-rerunfailures(失敗用例重復執行)
pytest-xdist(多CPU分發)
4.測試用例的skip和xfail處理
5.可以很好的和jenkins集成
6.pytest也支持allure測試報告
7.能兼容unittest,是unittest的擴展

二、Pytest以及常用插件安裝

把如下內容寫到一個txt文件中,如require-install.txt
pytest
pytest-html
pytest-xdist
pytest-rerunfailures
然后在Dos窗口中使用此命令安裝所有的模塊:pip install -r require-install.txt
通過命令:pytest --version驗證安裝結果。如果報如下錯誤則需要調整python或pytest的版本,這是python和pytest的版本不兼容:在這里插入圖片描述
下面說兩個錯誤例子,一個是win7、python3.7.4以及pytest5.0+,將python降到3.7.3就ok了,另一個是Windows 10, python 3.8.1, pytest 5.3.3,將pytest降到4.6.9以下版本也ok,因此建議你要么降python版本,要么降pytest版本試試。
筆者使用的是:win7+python3.7.3+pytest5.4.1,親測沒問題。

三、 pytest框架基礎應用

  1. pytest運行函數時和運行類里面的方法情況如下:
importpytestdeftest01():print('測試用例一')defabcd():print('測試用例二')classTestCase:deftest_03(self):print('測試用例三')defdefg(self):print('測試用例四')if__name__=='__main__':pytest.main(['-s','pytest-demo.py'])

運行結果如下:

在這里插入圖片描述
注意事項:
(1) 測試函數、類中的測試方法都必須以test_ 開頭,當然以什么開頭在pytest可自定義。
(2) 測試類必須以Test開頭,并且不能帶有init方法
(3) 斷言必須使用assert斷言
執行方式:
(1) 主函數方式運行:
指定運行文件:pytest.main([’-s’,‘pytest-demo.py模塊名’])
注意:如果py文件是以test_開頭或者以_test結尾則可以使用pytest.main()運行。因為pytest.main()會運行當前目錄下所有以test_開頭或者以_test結尾的文件。
(2) 命令行方式運行
點開Pycharm左下角的:Terminal打開當面目錄下的命令行窗口。
輸入命令執行:pytest pytest-demo.py模塊名
注意:如果py文件是以test_開頭或者以_test結尾則可以使用pytest命令運行,因為pytest會運行當前目錄下所有以test_開頭或者以_test結尾的文件。

四、 運行時參數說明

-s:顯示打印內容
如:pytest pytest-demo.py -s
等價于:pytest.main([’-s’,‘pytest-demo.py’])
:::指定測試用例運行
運行函數:如:pytest pytest-demo.py::test_01
等價于:pytest.main([’-s’,‘pytest-demo.py::test01’])
運行類中方法:如:pytest pytest-demp.py::TestCase::test_03
等價于:pytest.main([’-s’, ‘pytest-demo.py::TestCase::test_03’])
–html=路徑/report.html:生成xml/html格式測試報告(需要先安裝pytest-html)
如:pytest pytest-demp.py --html-./report.html
等價于:pytest.main([’-s’,‘pytest-demo.py’,’–html=./report.html’])
–maxfail=1:出現1個失敗就終止測試
如:pytest pytest-demo.py --maxfail=1
等價于:pytest.main([’-s’,‘pytest-demo.py’,’–maxfail=1’])
-n:pytest-xdist多線程運行(需要先安裝pytest-xdist)
如:pytest pytest-demo.py -n 2
等價于:pytest.main([’-s’,‘pytest-demo.py’,’-n=2’])
在用例中使用time.sleep(2)加等待時間測試,發現多線程時間減少了。
–reruns NUM:重試運行測試用例(需要先安裝pytest-rerunfailures)
如:pytest pytest-demo.py --reruns 2
則一旦有用例失敗,則會重復執行兩次,貌似這種不能用main運行。

由此能看出:pytest.main([’-s’,‘pytest-demo.py模塊名’]),main方法中是傳入的一個list格式,list中可以傳入多個參數。

五、pytest的ini配置文件

pytest.ini文件是pytest的主配置文件,可以改變pytest的默認行為。
1.pytest.ini的放置位置:一般放在項目工程的根目錄(即當前項目的頂級文件夾下)
2.pytest.ini的作用:指定pytest的運行方式(在cmd輸入pytest后,會讀取pytest.ini中的配置信息,按指定的方式去運行)
3.cmd下使用 pytest -h 命令查看pytest.ini的設置選項(以下截圖只是部分選項)
常用設置選項如下:
[pytest]
addopts = -s … #可添加多個命令行參數,用空格分隔
testpaths = …/pytestproject #測試用例文件夾,可自己配置,…/pytestproject為上一層的pytestproject文件夾。
python_files = test*.py #配置測試搜索的模塊文件名稱
python_classes = Test* #配置測試搜索的測試類名
python_funtions = test #配置測試搜索的測試函數名

示例如下:
[pytest]
addopts = -s --html=./report.html
testpaths = …/pytestproject
python_files = test*.py
python_classes = Test*
python_funtions = test*

注意:
1.運行的時候自動讀取配置文件,運行pytestproject下的所有test開頭的模塊文件。

這可能是B站最詳細的pytest自動化測試框架教程,整整100小時,全程實戰!!!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35247.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35247.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35247.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用sqlplus連接oracle,提示ORA-01034和ORA-27101

具體內容如下 PL/SQL Developer 處 登錄時 終端處 登錄時 ERROR: ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist Process ID: 0 Session ID: 0 Serial number: 0 解決方法是執行以下命令 sqlplus /nolog conn / as sysdba startup …

【Hilog】鴻蒙系統日志源碼分析

【Hilog】鴻蒙系統日志源碼分析 Hilog采用C/S結構,Hilogd作為服務端提供日志功能。Client端通過API調用(最終通過socket通訊)與HiLogd打交道。簡易Block圖如下。 這里主要分析一下。Hilog的讀、寫、壓縮落盤,以及higlog與android…

學術論文GPT源碼解讀:從chatpaper、chatwithpaper到gpt_academic

前言 之前7月中旬,我曾在微博上說準備做“20個LLM大型項目的源碼解讀” 針對這個事,目前的最新情況是 已經做了的:LLaMA、Alpaca、ChatGLM-6B、deepspeedchat、transformer、langchain、langchain-chatglm知識庫準備做的:chatpa…

GitHub上受歡迎的Android UI Library

內容 抽屜菜單ListViewWebViewSwitchButton按鈕點贊按鈕進度條TabLayout圖標下拉刷新ViewPager圖表(Chart)菜單(Menu)浮動菜單對話框空白頁滑動刪除手勢操作RecyclerViewCardColorDrawableSpinner布局模糊效果TabBarAppBar選擇器(Picker)跑馬燈日歷時間主題樣式ImageView通知聊…

chapter 1 formation of crystal, basic concepts

chapter 1 晶體的形成 1.1 Quantum Mechanics and atomic structure 1.1.1 Old Quantum Theory problems of planetary model: atom would be unstableradiate EM wave of continuous frequency to solve the prablom of planetary model: Bohr: Quantum atomic structureP…

React 實現文件分片上傳和下載

React 實現文件分片上傳和下載 在開發中,文件的上傳和下載是常見的需求。然而,當面對大型文件時,直接的上傳和下載方式可能會遇到一些問題,比如網絡傳輸不穩定、文件過大導致傳輸時間過長等等。為了解決這些問題,我們…

Vue中自定義.js變量

1、定義.js文件 order.js文件內容: // 訂單是否報賬 const EXPENESS_STATUS_NO0; const EXPENESS_STATUS_YES1; // 狀態 0-未發貨 1-發貨 2-確認收獲 const STATUS_NO0; const STATUS_SEND1; const STATUS_DELIVERY2; // 如何不加這個,vue中引…

yolov5、YOLOv7、YOLOv8改進:注意力機制CA

論文題目:《Coordinate Attention for Efficient Mobile NetWork Design》論文地址: https://arxiv.org/pdf/2103.02907.pdf 本文中,作者通過將位置信息嵌入到通道注意力中提出了一種新穎的移動網絡注意力機制,將其稱為“Coordin…

Nagle算法--網絡優化算法

Nagle Nagle算法是一種網絡優化算法,旨在減少小數據包的網絡傳輸次數,提高網絡傳輸效率。該算法由John Nagle在1984年提出,并被廣泛應用于TCP協議中。 Nagle算法的原理是將較小的數據包進行緩存,在緩存數據包的發送時機到來時&am…

拓撲布局和建立小型網絡

練習 2.6.1:拓撲布局和建立小型網絡 地址表 本實驗不包括地址表。 拓撲圖 學習目標 正確識別網絡中使用的電纜物理連接點對點交換網絡驗證每個網絡的基本連通性 簡介: 許多網絡問題都可以在網絡的物理層解決。因此,必須清楚了解網絡連接…

Python數據分析實戰-列表字符串、字符串列表、字符串的轉化(附源碼和實現效果)

實現功能 str([None,master,hh]) ---> [None,"master","hh"] ---> "None,master,hh" 實現代碼 import re import astx1 str([None,master,hh]) print(x1)x2 ast.literal_eval(x1) print(x2)x3 ",".join(str(item) for item…

阿里云服務器是什么?阿里云服務器有什么優缺點?

阿里云服務器是什么?云服務器ECS是一種安全可靠、彈性可伸縮的云計算服務,云服務器可以降低IT成本提升運維效率,免去企業或個人前期采購IT硬件的成本,阿里云服務器讓用戶像使用水、電、天然氣等公共資源一樣便捷、高效地使用服務器…

Controller是線程安全嗎?如何實現線程安全

測試是否是線程安全 RequestMapping("/test") RestController public class TestController {//1、定義num,判斷不同線程訪問的時候,num的返回結果是否一致private Integer num0;/*** 2、定義兩個方法*/GetMapping("/count1")publi…

【UE4 RTS】08-Setting up Game Clock

前言 本篇實現的效果是在游戲運行后能夠記錄當前的游戲時間(年月日時分秒),并且可以通過修改變量從而改變游戲時間進行的快慢。 效果 步驟 1. 在Blueprints文件夾中新建如下兩個文件夾,分別命名為“GameSettings”、“Player”…

JZ33二叉搜索樹的后序遍歷序列

題目地址:二叉搜索樹的后序遍歷序列_牛客題霸_牛客網 題目回顧: 解題思路: 使用棧 棧的特點是:先進后出。 通讀題目后,我們可以得出,二叉搜索樹是左子節點小于根節點,右子節點大于根節點。 …

章節5:腳本注入網頁-XSS

章節5:腳本注入網頁-XSS XSS :Cross Site Script 惡意攻擊者利用web頁面的漏洞,插入一些惡意代碼,當用戶訪問頁面的時候,代碼就會執行,這個時候就達到了攻擊的目的。 JavaScript、Java、VBScript、Activ…

Elasticsearch的一些基本概念

文章目錄 基本概念:文檔和索引JSON文檔元數據索引REST API 節點和集群節點Master eligible節點和Master節點Data Node 和 Coordinating Node其它節點 分片(Primary Shard & Replica Shard)分片的設定操作命令 基本概念:文檔和索引 Elasticsearch是面…

SQL-每日一題【1517. 查找擁有有效郵箱的用戶】

題目 表: Users 編寫一個解決方案,以查找具有有效電子郵件的用戶。 一個有效的電子郵件具有前綴名稱和域,其中: 前綴 名稱是一個字符串,可以包含字母(大寫或小寫),數字,下劃線 _ &…

RT-Thread Smart 用戶態開發體驗

背景 RT-Thread Smart 是基于 RT-Thread 操作系統上的混合操作系統,它把應用從內核中獨立出來,形成獨立的用戶態應用程序,并具備獨立的地址空間。 自 V5.0.0 起,rt-smart 分支已合并至 master 分支上,下載 rt-thread …

【學習】若依源碼(前后端分離版)之 “ 上傳圖片功能實現”

大型紀錄片:學習若依源碼(前后端分離版)之 “ 上傳圖片功能實現” 前言前端部分后端部分結語 前言 圖片上傳也基本是一個項目的必備功能了,所以今天和大家分享一下我最近在使用若依前后端分離版本時,如何實現圖片上傳…