1、在實際的測試工做中,一般須要對多組不一樣的輸入數據,進行一樣的測試操做步驟,以驗證咱們的軟件。這種測試在功能測試中javascript
很是耗費人力物力,可是在自動化中,卻比較好實現,只要實現了測試操做步驟,而後將多組測試數據以數據驅動的形式注入,就能夠實現了,php
前面學習了參數化,當數據量很是大的時候,咱們能夠將數據存放到外部文件中,使用的時候將文件中的數據讀取出來,方便測試數據的管理,html
數據與測試用例分別管理,能夠利用外部數據源YAML、json、Excel 、CSV管理測試數據java
pytest結合yamlpython
yaml是一個可讀性高,用來表達數據序列化的格式。pyyaml模塊在python中用於處理yaml格式數據,主要使用yaml.safe_dump() 和 yaml.safe_load()函數將python值web
和yaml格式數據相互轉換。工做中經常使用yaml格式的文件存儲測試數據json
安裝ruby
pip install PyYAMLsession
實例:框架
建立用例文件以及數據文件來完成數據驅動的測試案例,建立一個文件夾testdata,在這個文件夾下建立data.yml 和test_yaml.py文件
建立data.yml文件:
建立test_yaml.py文件:
#!/usr/bin/env python # _*_coding: utf-8 _*_ import pytest import yaml @pytest.mark.parametrize("a, b", yaml.safe_load(open("data.yml", encoding='utf-8'))) def test_foo(a, b): print(f"a + b = {a + b}")
運行結果:
Testing started at 19:49 ... C:\Python\python.exe "C:\Program Files\JetBrains\PyCharm Community Edition 2019.1\helpers\pycharm\_jb_pytest_runner.py" --target test_yaml.py::test_foo Launching pytest with arguments test_yaml.py::test_foo in C:\Users\wanwen\PycharmProjects\vigo\xuexi\testdata ============================= test session starts ============================= platform win32 -- Python 3.8.0, pytest-5.4.3, py-1.9.0, pluggy-0.13.1 rootdir: C:\Users\wanwen\PycharmProjects\vigo\xuexi\testdata plugins: html-2.1.1, metadata-1.11.0, ordering-0.6collected 2 items test_yaml.py [100%] ============================== 2 passed in 0.69s ============================== Process finished with exit code 0 .a + b = 3 .a + b = 50
代碼分析:yaml文件裏定義了列表數據,經過open()方法獲取data.yml文件對象,使用yaml.safe_load()加載這個文件對象,將yaml格式文件轉換爲python值,分別傳到用例中生成多條用例分別執行
2、結合allure生成測試報告
測試報告在項目中是一個相當重要的角色,報告能夠體現測試人員的工做量,開發人員能夠從測試報告中瞭解缺陷的狀況,測試經理能夠從測試報告中看到測試人員的執行狀況及測試用例的覆蓋率,項目負責人能夠經過測試報告查看整個項目還餘留多少問題,這次版本是否測試經過,一個美觀,一目瞭然的測試報告可以很是清晰的反應一些問題,提供給相關人員瞭解項目的總體狀態。allure框架是一種靈活的輕量級支持多種語言的測試報告工具,它不只可以以簡潔的web報告形式顯示已測試的內容,並且容許參與開發過程的每一個人從測試的平常執行中提取最大限度的有用信息。同時支持多種語言包括JAVA Python javascript groovy ruby php .net scala
安裝
pip install allure-pytest
查看allure版本
allure --version
運行
第一步:在pytest執行測試的時候,指定參數-alluredir選項及結果數據保存的目錄,代碼以下:
pytest --alluredir=tmp/my_allure_results
tmp/my_allure_results中保存了本次測試的結果數據
第二步:打開報告,須要啓動allure服務,在terminal中輸入allure server
【path/to/allure_results】,代碼以下
allure server path/to/allure_results
也可使用allure generate生成HTML格式的測試結果報告,並使用allure open來打開報告
allure generate ./result/ -o ./report/ --clean
上面的命令將./result/目錄下的測試數據生成HTML測試報告到./report路徑下,--clean選項目的是先清空測試報告目錄,再將生成新的測試報告,而後使用下面的命令打開報告
allure open -h 127.0.0.1 -p 8883 ./report/