1. 程式人生 > 實用技巧 >pytest自定義mark

pytest自定義mark

1、pytest可以支援自定義標記,自定義標記可以把一個web專案劃分為多個模組,然後指定模組名稱去執行。APP自動化的時候,如果想Android和IOS共用一套程式碼時,也可以使用標記功能。標明那些是IOS用例,那些是Android用例,執行時指定mark名稱執行。

mark標記:

例如這個用例test_send_http()被標記為為 webtest,執行時指定webtest標記。

import pytest

@pytest.mark.webtest
def test_01():
      print('test case 1')

def  test_02():
      print('test case 2')

def test_03():
      print('test case 3')

class TestClass:
       def test_method(self):
             pass

if __name__=='__main__':
       pytest.main(['-s','test_sample.py', '-m=webtest'])

  命令列執行:

pytest -v -m webtest

  如果要執行除webtest以外的就用“ not webtest”

pytest -v -m "not webtest"

  

2、-v 按照指定的節點id來執行測試

如果想知道執行某個.py模組下,一個類中的一個用例。如testclass類中的test_01()用例,用例的名稱就是用例的節點id。指定節點id 執行用 -v 引數:

pytest -v test_sample.py::TestClass::test_01

  另外也可以執行整個class的用例:

pytest -v test_sample.py::TestClass

  也能選擇多個節點執行,多個節點中間用空格區分:

pytest -v test_sample.py::TestClass   test_sample.py::test_send_http

3、引數 -k 安裝用例名稱關鍵字執行

可以使用-k命令列引數指定匹配某些符合表示式的用例:

pytest -v -k http

  也可以執行所有的測試,根據用例名稱排除掉某些用例:

pytest -k "not send_http" -v

  也可以同時匹配兩個關鍵字:

pytest -k "http or quick" -v