[TOC]
## Pytest參數
### 1:-K?EXPRESSION
執行某個關鍵字的用例
用例要匹配給出的表達式;使用python的語法,匹配的范圍是文件名、類名、函數名為變量,用and來區分
如下面一段測試用例
~~~
class TestClass(object):
def test_zne(self):
x = "hello"
assert 'h' in x
def test_two(self):
x = "check"
assert hasattr(x, 'check')
def test_a(self):
assert 1 == 2
~~~
運行pytest時帶-k參數
```
pytest -k "test and TestClass and not test_a" pytest_test.py
```

可以看出,test\_a這個用例被取消選擇了,沒有運行了
<br>
<br>
### 2:--maxfail=num
\----maxfail=num 表示用例失敗總數等于num 時停止運行
```
pytest --maxfail=1 pytest_test.py
```

<br>
<br>
### 3:-m MARKEXPR
只能運行有相應標識的測試用例,使用這個參數,測試用例要使用@pytest.mark.marker修飾
? 如下實例
~~~
import pytest
class TestClass(object):
def test_zne(self):
x = "hello"
assert 'h' in x
def test_two(self):
x = "check"
assert hasattr(x, 'check')
def test_one(self):
assert 1 == 2
@pytest.mark.slow
def test_tow(self):
"""New case"""
num = "word"
assert hasattr(num,"word")
~~~
teste\_two使用了@pytest.mark.slow來修飾
在使用時,使用如下參數
```
pytest -m slow pytest_test.py
```

從上圖中可以看出,只運行了一個我們帶有標識的用例。
注意,-m后面不能帶''號(單引號),只能帶“”(雙引號),不然識別不到
如果要運行多個標識的話,用表達式,如下
```
pytest -m "slow or faster" 運行有slow標識或 faster標識用例
pytest -m "slow and faster" 運行有slow和faster標識的用例
pytest -m "slow and not faster" 運行有slow和沒有faster標識的用例
```
<br>
<br>
### 4:?-v, --verbose
**可以輸出用例更加詳細的執行信息,如下圖**


<br>
<br>
### 5:\-q, --quiet
**簡化控制臺的輸出**
<br>
<br>
### 6:\-s
輸入我們用例中的調式信息,比如print的打印信息等,我們在用例中加上一句 print(driver.title),我們再運行一下我們的用例看看,調試信息輸出
<br>
<br>
### 7:--junit-xml=path
輸出xml文件格式,在與jenkins做集成時使用
<br>
<br>
### 8:?--result-log=path
將最后的結果保存到本地文件中
注意:標黃的是經常使用的
<br>
<br>
## 四、pytest 用例規則
pytest可以在不同的函數、包中發現用例,發現的規則如下
* 文件名以test\_開頭的py文件
* 以test\_開頭的函數
* 以Test開頭的類
* 以test\_開頭的方法(與2類似)
* 要注意的是所有的包必須要有init.py文件(在使用各種編輯器時會自動生成)