Pytest系列(1) - 快速入門和基礎講解


如果你還想從頭學起Pytest,可以看看這個系列的文章哦!

https://www.cnblogs.com/poloyy/category/1690628.html

 

前言

  • 目前有兩種純測試的測試框架,pytest和unittest
  • unittest應該是廣為人知,而且也是老框架了,很多人都用來做自動化,無論是UI還是接口
  • pytest是基於unittest開發的另一款更高級更好用的單元測試框架
  • 出去面試也好,跟別人說起來也好,pytest的逼格明顯高於unittest

 

為什么要用Pytest

pytest 的官方網站介紹,它具有如下特點:

  1. 非常容易上手,入門簡單,文檔豐富,文檔中有很多實例可以參考
  2. 能夠支持簡單的單元測試和復雜的功能測試
  3. 支持參數化
  4. 執行測試過程中可以將某些測試跳過(skip),或者對某些預期失敗的case標記成失敗
  5. 支持重復執行(rerun)失敗的 case
  6. 支持運行由 nose, unittest 編寫的測試 case
  7. 可生成 html 報告
  8. 方便的和持續集成工具 jenkins 集成
  9. 可支持執行部分用例
  10. 具有很多第三方插件,並且可以自定義擴展

 

安裝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_ 開頭的類里面的方法
  • 所有的包 package 必須要有__init__.py 文件

 

Pytest執行用例規則

注意,下面講的都是在cmd中執行pytest命令

1、某個目錄下所有的用例

pytest

 

2、執行某一個 py 文件下用例 

pytest 腳本名稱.py

  

3、運行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

 

4、運行start.py 模塊里面,測試類里面的某個方法

pytest start.py::TestClass::test_two
 

5、-m 標記表達式(后續講解)

 pytest -m login

將運行用 @pytest.mark.login 裝飾器修飾的所有測試,后面再展開講標記哦

 

6、-q 簡單打印,只打印測試用例的執行結果

 pytest -q start.py

 

7、-s 詳細打印

 pytest -s start.py

 

8、-x 遇到錯誤時停止測試

pytest start.py -x

 

9、—maxfail=num,當用例錯誤個數達到指定數量時,停止測試

pytest start.py --maxfail=1

 

10、-k 匹配用例名稱

執行測試用例名稱包含http的所有用例

pytest -s -k http start.py

 

11、-k 根據用例名稱排除某些用例

1 pytest -s -k "not http" start.py

 

12、-k 同時匹配不同的用例名稱

pytest -s -k "method or weibo" start.py

 

Pycharm運行Pytest

平時寫代碼,咱們都在Pycharm寫的,怎么可能一直用cmd來跑用例呢,現在我們就來看看在Pycharm中如何運行Pytest

  1. 首先,我們先要去settings里面設置單元測試框架為Pytest
  2. 如果是nosetests的話,右鍵運行是以python腳本運行的哦
  3. 如果設置了unittest則是以unittest框架去運行

 

注意

pytest 是可以兼容 unittest 腳本的,之前寫的 unittest 用例也能用 pytest 框架去運行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM