在生成報告前,需要先記錄下最近學習到的pytest的配置,在項目的根目錄添加pytest.ini文件,然後填入
[pytest]
addopts = -vs #命令行的參數,用空格隔開
testpaths = ./ #測試用例的路徑
python_files = test_*.py #文件名的規則
python_classes = Test* #類名的規則
python_functions = test #方法名的規則
makers = #設置用例的分組
smoke:'用例'
usermanage
這裡你可以根據自己的需求去修改配置
好了,開始安裝我們的allure了
下載地址:Central Repository: io/qameta/allure/allure-commandline
下載需要的版本
下載解壓完成後,將bin文件夾所在的目錄放入環境變量中,同時需要安裝JDK
完成後,命令行pip install allure-pytest安裝allure插件,安裝完成後可以驗證一下,看看是否安裝成功,首次安裝後需要重啟下pycharm
上代碼
import pytest
import requests
import yaml
import json
import os
import allure
from load_data import yaml_load
token = None
@pytest.mark.parametrize('data1',yaml_load.load('../data/user.yaml'))
def test_01(data1):
url_login = "https://***/jlcloud/api/login"
response1 = requests.request("POST", url=url_login, json=data1['user'])
print(response1.text)
result=json.loads(response1.text)
try:
global token #定義全局變量
token=result['data']
print(token)
except:
pass
assert data1['msg'] == result['message']
# 獲取用戶信息
def test_02():
print(token)
url_userinfo = "https://***/jlcloud/api/login/getUserInfo"
params = {"token": token}
res2 = requests.request("GET", url=url_userinfo, params=params)
print(res2.text)
result2 = json.loads(res2.text)
assert result2['message'] == "成功"
if __name__ == '__main__': # pytest運行模式
pytest.main('-vs',--alluredir= ./temp") #生成json數據,生成後可以在temp文件查看
os.system('allure generate ./pytest_case/temp -o report/html --clean') #將json數據生成,報告存至report文件
生成的json數據如下:
在report中點擊index.html文件用浏覽器打開,測試報告如下:
這裡我直接運行了文件,不知道為啥沒有生成報告,但是使用終端命令行 allure generate ./pytest_case/temp -o report/html --clean卻可以生成
另一種方式將pytest.ini配置文件的addopts稍作修改,就不需要每次運行都要寫上參數了
[pytest]
addopts = -vs --alluredir ./temp #生成json數據
testpaths= ./pytest_case
python_files=test_*.py
python_classes=Test*
python_functions= test
import pytest
import requests
import yaml
import json
import os
import allure
from load_data import yaml_load
token = None
@pytest.mark.parametrize('data1',yaml_load.load('../data/user.yaml'))
def test_01(data1):
url_login = "https://***/jlcloud/api/login"
response1 = requests.request("POST", url=url_login, json=data1['user'])
print(response1.text)
result=json.loads(response1.text)
try:
global token #定義全局變量
token=result['data']
print(token)
except:
pass
assert data1['msg'] == result['message']
# 獲取用戶信息
def test_02():
print(token)
url_userinfo = "https://***/jlcloud/api/login/getUserInfo"
params = {"token": token}
res2 = requests.request("GET", url=url_userinfo, params=params)
print(res2.text)
result2 = json.loads(res2.text)
assert result2['message'] == "成功"
if __name__ == '__main__': # pytest運行模式
pytest.main()
os.system('allure generate ./pytest_case/temp -o report/html --clean')#將json數據生成報告