pytest特點(diǎn)
非常容易上手雄右,入門簡單,文檔豐富纺讲,文檔中有很多實(shí)例可以參考
能夠支持簡單的單元測試和復(fù)雜的功能測試
支持參數(shù)化
執(zhí)行測試過程中可以將某些測試跳過(skip),或者對某些預(yù)期失敗的case標(biāo)記成失敗
支持重復(fù)執(zhí)行(rerun)失敗的 case
支持運(yùn)行由 nose, unittest 編寫的測試 case
可生成 html 報(bào)告
方便的和持續(xù)集成工具 jenkins 集成
可支持執(zhí)行部分用例
具有很多第三方插件囤屹,并且可以自定義擴(kuò)展
快速入門
test_demo.py, 示例代碼如下:
# -*- coding: utf-8 -*-
def add(x):
return x + 2;
class TestClass(object):
# 測試是否相等
def test_add(self):
assert add(2) == 5
# 測試包含
def test_in(self):
a = 'hello world'
b = 'he'
assert b in a
# 測試不包含
def test_not_in(self):
a = 'Hello'
b = 'hi'
assert b not in a
1熬甚、執(zhí)行
命令行當(dāng)前文件同級目錄下,輸入如下命令:
pytest
說明:
只執(zhí)行 pytest 肋坚,會查找當(dāng)前目錄及其子目錄下以 test_*.py 或 *_test.py 文件乡括,找到文件后,在文件中找到以 test 開頭函數(shù)并執(zhí)行
只想執(zhí)行某個(gè)文件智厌,可以 pytest test_demo.py
加上-q诲泌,就是顯示簡單的結(jié)果: pytest -q test_demo.py
用Pytest寫用例時(shí)候,一定要按照下面的規(guī)則去寫铣鹏,否則不符合規(guī)則的測試用例是不會執(zhí)行的
Pytest用例的設(shè)計(jì)原則
文件名以 test_.py 文件和test.py
以 test 開頭的函數(shù)
以 Test 開頭的類敷扫,不能包含 init 方法
以 test_ 開頭的類里面的方法
所有的包 pakege 必項(xiàng)要有init.py 文件
Pytest執(zhí)行用例規(guī)則
下面以windows系統(tǒng)為例,使用命令來來執(zhí)行pytest
1诚卸、指定目錄下的所有用例
pytest
2葵第、執(zhí)行某一個(gè)py文件下用例
pytest 文件名.py
3绘迁、運(yùn)行test_demo.py文件中模塊里面的某個(gè)函數(shù),或者某個(gè)類,某個(gè)類里面的方法
說明:加v和不加-v都可以卒密,加-v的話缀台,打印的信息更詳細(xì)
pytest -v test_demo.py::TestClass::test_add
pytest test_demo.py::TestClass::test_not_in
pytest test_demo.py::test_in
4、運(yùn)行test_demo.py 模塊里面,測試類里面的某個(gè)方法
pytest test_demo.py::test_in
5哮奇、-m 標(biāo)記表達(dá)式(后面有詳解)
pytest -m login
將運(yùn)行用 @pytest.mark.login 裝飾器修飾的所有測試膛腐,后面有詳解!
6、-q 簡單打印鼎俘,只打印測試用例的執(zhí)行結(jié)果
pytest -q test_demo.py
7依疼、-s 詳細(xì)打印
pytest -s test_demo.py
8、-x 遇到錯(cuò)誤時(shí)停止測試
pytest test_demo.py -x
9而芥、—maxfail=num律罢,當(dāng)用例錯(cuò)誤個(gè)數(shù)達(dá)到指定數(shù)量時(shí),停止測試
pytest test_demo.py --maxfail=1
10棍丐、-k 匹配用例名稱
pytest -s -k _in test_demo.py
11误辑、-k 根據(jù)用例名稱排除某些用例
pytest -s -k "not _in" test_demo.py
12、-k 同時(shí)匹配不同的用例名稱
pytest -s -k "add or _in" test_demo.py
使用Pycharm執(zhí)行pytest
1歌逢、File->settings->python integrated tools->Testing下的default testrunner修改為Pytest
注意:
pytest兼容unittest腳本,所以不影響之前使用unittest編寫的腳本
2巾钉、并不是修改完以上配置,就一定好用秘案,如上面方法修改完仍不好用砰苍,參考下面方案:
檢查pycharm中的python interpreter是否設(shè)置為Python安裝目錄下的Python.exe
pycharm設(shè)置為國內(nèi)源,如豆瓣阱高、清華赚导、阿里云等等!
3赤惊、如果和我一樣之前使用IDEA中pytest插件編碼的話吼旧,在進(jìn)行完以上兩步操作后,執(zhí)行如下操作:
打開IDEA未舟,將settings->python integrated tools->Testing下的default testrunner修改為Pytest
你會在打開的.py文件右上角看到提示圈暗,提示你選擇Python的sdk路徑,選擇為Python安裝目錄下的Python.exe裕膀,確定后员串,會自動(dòng)編譯更新,更新完你會發(fā)現(xiàn)使用IDEA可以使用pytest運(yùn)行了
再回頭查看pycharm這時(shí)候也提示你選擇sdk的安裝目錄昼扛,同上選擇好Python安裝目錄寸齐,也會自動(dòng)編譯更新,更新完后,你會發(fā)現(xiàn)使用pycharm也可以使用pytest運(yùn)行了
參考鏈接
https://wap.peopleapp.com/atlas/6015291
系列參考文章:
https://www.cnblogs.com/poloyy/category/1690628.html