若是你還想從頭學起Pytest,能夠看看這個系列的文章哦!html
https://www.cnblogs.com/poloyy/category/1690628.htmlpython
前言
- 目前有兩種純測試的測試框架,pytest和unittest
- unittest應該是廣爲人知,並且也是老框架了,不少人都用來作自動化,不管是UI仍是接口
- pytest是基於unittest開發的另外一款更高級更好用的單元測試框架
- 出去面試也好,跟別人提及來也好,pytest的逼格明顯高於unittest
爲何要用Pytest
pytest 的官方網站介紹,它具備以下特色:
- 很是容易上手,入門簡單,文檔豐富,文檔中有不少實例能夠參考
- 可以支持簡單的單元測試和複雜的功能測試
- 支持參數化
- 執行測試過程當中能夠將某些測試跳過(skip),或者對某些預期失敗的case標記成失敗
- 支持重複執行(rerun)失敗的 case
- 支持運行由 nose, unittest 編寫的測試 case
- 可生成 html 報告
- 方便的和持續集成工具 jenkins 集成
- 可支持執行部分用例
- 具備不少第三方插件,而且能夠自定義擴展
安裝Pytest
cmd運行
pip install -U pytest pip3 install pytest -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
查看版本
pytest --version
快速開始
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = __Time__ = 2020-04-06 12:33 __Author__ = 小菠蘿測試筆記 __Blog__ = https://www.cnblogs.com/poloyy/ """ def func(x): return x + 1 def test_answer(): assert func(3) == 5 class TestClass: def test_one(self): x = "this" assert "h" in x def test_two(self): x = "hello" assert hasattr(x, "check")
而後,cmd進入當前文件目錄,直接執行面試
pytest
知識點
- 若是隻執行 pytest ,會查找當前目錄及其子目錄下以 test_*.py 或 *_test.py 文件,找到文件後,在文件中找到以 test 開頭函數並執行
- 若是隻想執行某個文件,能夠 pytest start.py
- 加上-q,就是顯示簡單的結果: pytest -q start.py
Pytest用例的設計原則
用Pytest寫用例時候,必定要按照下面的規則去寫,不然不符合規則的測試用例是不會執行的框架
- 文件名以 test_*.py 文件和*_test.py
- 以 test_ 開頭的函數
- 以 Test 開頭的類,不能包含 __init__ 方法
- 以 test_ 開頭的類裏面的方法
- 全部的包 pakege 必項要有__init__.py 文件
Pytest執行用例規則
注意,下面講的都是在cmd中執行pytest命令函數
一、某個目錄下全部的用例
pytest
二、執行某一個 py 文件下用例
pytest 腳本名稱.py
三、運行start.py 模塊裏面的某個函數,或者某個類,某個類裏面的方法
加v和不加-v均可以,加-v的話,打印的信息更詳細工具
pytest -v 08_mark.py::TestClass::test_method pytest 08_mark.py::TestClass::test_method pytest start.py::test_answer
四、運行start.py 模塊裏面,測試類裏面的某個方法
pytest start.py::TestClass::test_two
五、-m 標記表達式(後續講解)
pytest -m login
將運行用 @pytest.mark.login 裝飾器修飾的全部測試,後面再展開講標記哦單元測試
六、-q 簡單打印,只打印測試用例的執行結果
pytest -q start.py
七、-s 詳細打印
pytest -s start.py
八、-x 遇到錯誤時中止測試
pytest start.py -x
九、—maxfail=num,當用例錯誤個數達到指定數量時,中止測試
pytest start.py --maxfail=1
十、-k 匹配用例名稱
執行測試用例名稱包含http的全部用例測試
pytest -s -k http start.py
十一、-k 根據用例名稱排除某些用例
1 pytest -s -k "not http" start.py
十二、-k 同時匹配不一樣的用例名稱
pytest -s -k "method or weibo" start.py
Pycharm運行Pytest
平時寫代碼,我們都在Pycharm寫的,怎麼可能一直用cmd來跑用例呢,如今咱們就來看看在Pycharm中如何運行Pytest網站
- 首先,咱們先要去settings裏面設置單元測試框架爲Pytest
- 若是是nosetests的話,右鍵運行是以python腳本運行的哦
- 若是設置了unittest則是以unittest框架去運行
注意
pytest 是能夠兼容 unittest 腳本的,以前寫的 unittest 用例也能用 pytest 框架去運行
本文分享 CNBlog - 阿菠蘿阿瑤。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。this