command
首先要介紹的是conftest.py
conftest.py
- 文件是一個單獨的存放fixtures的文件。
- 基礎跑testing的設定全部都會在這裡例如command 或是 skip test等等的設定
- 這是一開始看pytest專案最應該先看的檔案 先行了解他們使用的檔案
加入第一個command
使用標準的function 去加入我們的command以及default值
import pytest
def pytest_addoption(parser):
parser.addoption("--envirementopt", action="store", default="TEST",
help="TEST or PRD")
parser.addoption("--brand", action="store", default="ASIA",
help="ASIA or UK")
如何去使用呢? 這裡我們先宣告了fixture = unittest 的 設定setUp and tearDown 下一章節會詳細介紹
使用fixture標記函數後,函數將默認接入一個request參數,它將包含使用該fixture函數的信息。 http://senarukana.github.io/2015/05/29/pytest-fixture/
@pytest.fixture
def customBrand(request):
return request.config.getoption("--brand")
@pytest.fixture
def customEnvirement(request):
return request.config.getoption("--envirementopt")
在測試中就可以直接調用此fixture的值
def test_brand(customBrand):
assert customBrand == "brand"
所以我們指令可以這樣下
pytest --brand=brand
or 不下他會根據程式碼去拿defualt 的值
pytest
應用方法
- pytest_generate_tests: allows one to define custom parametrization schemes or extensions. 應用於產生測試的參數時候
EX:
根據command 決定要執行哪一些test case
根據command 決定要生成哪一些test case參數
def pytest_generate_tests(metafunc):
if metafunc.config.option.brand=="ASIA":
dosomething....
https://docs.pytest.org/en/latest/parametrize.html#pytest-generate-tests
Metafunc objects are passed to the pytest_generate_tests hook. They help to inspect a test function and to generate tests according to test configuration or values specified in the class or module where a test function is defined.
這裡的用法 可以透過metafunc去拿到我們要的option值 他是一個OBJECT 用於處理test case 相關資訊