前言:其實這篇寫的是pytest的測試框架運用,實現自動化和https://www.cnblogs.com/Jack-cx/p/9357658.html 原理一致
1.為啥不用unittest
Pytest相對Unittest更加靈活一點,unittest需要寫類繼承unittest.TestCase類,pytest不需要可寫可不寫類,也支持生成html測試報告
2.創建工程
&對比上面robot的工程,增加一個PyUnit目錄和report,這里主要放單元測試框架其他實現思路一致,report放執行后生成的html報告
3.新建測試用例
&可以看出單元測試框架命名規則風格其實都是一致的,調用“底層“寫的一個方法去讀execel運行測試用例
4.pytest運行用例規則
&深入研究請百度,下面只讓你能獨立寫一個自動化工程的目的
1.文件已 test_開頭 test_*.py
2.類已Test_開頭 class Test_login()
3.方法已test_開頭 def test_login()
5.初始化和清理的方法使用
- fixture函數可以使用在測試函數中,測試類中,測試文件中以及整個測試工程中。
- fixture支持模塊化,fixture可以相互嵌套
- fixture支持參數化
- fixture支持unittest類型的setup和teardown
1)模塊級(setup_module/teardown_module)開始於模塊始末:在所有測試用例開始執行setup_module和所有用例執行結束后執行teardown_module
2)類級(setup_class/teardown_class)開始於類的始末:在當前測試類的開始與結束執行
3)類里面的(setup/teardown)(運行在調用函數的前后)
4)功能級(setup_function/teardown_function)開始於功能函數始末(不在類中):用於每個測試用例開始執行時執行setup_function和在每個用例執行結束后執行teardown_function
5)方法級(setup_method/teardown_method)開始於方法始末(在類中):在每個測試方法開始與結束執行
&本次以UI自動化為例,只用到的setup_method每次用例執行先調用瀏覽器打開網址
細節可參考:https://www.cnblogs.com/ranxf/p/7766229.html講的比較細
6.多種運行測試用例
&運行目錄下所有測試用例
Dos下 到Pyunit下執行 py.test –html=需要生成的report路徑
&運行執行某個py文件里的用例
Dos下 到Pyunit下執行 py.test 文件名.py –html=需要生成的report路徑
&運行類里的某個方法
pytest -v test_a.py::TestClass::test_method
&運行指定的類中所有方法
pytest -v test_a.py::TestClass
&組合運行
pytest -v test_a.py::TestClass test_b.py:: test_method
7.斷言
簡單斷言,用例執行完返回一個True或False assert==True,是True則通過,否則失敗