生成测试报告:pytest-html
Allure
结合allure生成测试报告

pytest 生成测试报告

pytest-html插件生成测试报告

  1. 安装
pip install pytest-html
  1. 命令行执行生成测试报告
# /html/report.html为生成测试报告的路径
pytest --html=/html/report.html

结合pytest-xdist使用(多线程执行并生成测试报告)

pytest -v -s -n 3 --html=report.html --self-contained-html 

Allure

关于allure

Allure 框架是一种灵活的、轻量级、支持多语言测试报告工具,它不仅能够以简洁的 Web 报告形式显示已测试的内容,而且允许参与开发过程的每个人从测试的日常执行中提取最大限度的有用信息。同时支持多种语言包括 Java、Python、JavaScript、Ruby、Groovy、PHP、.Net、 Scala

安装命令行

  • windows
    scoop install allure
    
  • mac
    brew install allure
    
  • 校验
    allure --version
    

使用

  1. 安装allure-pytest插件
    pip install allure-pytest
    
  2. 在pytest执行时添加--alluredir来指定测试执行结果保存的目录
    pytest --alluredir=/tmp/my_allure_results
    
  3. 测试执行后启动allure服务来打开测试报告
    allure serve /tmp/my_allure_results
    

    /tmp/my_allure_results为测试结果保存路径

  4. 也可利用测试结果数据生成html测试报告
    allure generate ./tmp/my_allure_results -o ./report/ --clean
    

    ./tmp/my_allure_results目录下的测试数据生成HTML测试报告到 ./report 路径下,--clean选项是先清空测试报告目录,再生成新的测试报告,然后使用下面的命令打开报告:allure open -h 127.0.0.1 -p 8883 ./report/

Pytest和Allure生成测试报告示例

百度搜索测试

  1. 数据准备data.yaml
- allure
- pytest
- unittest
  1. 测试用例test_baidu_keyword.py
import allure
import pytest
import yaml
from selenium import webdriver
import time


@allure.testcase("http://www.github.com")
@allure.feature("百度搜索")
@pytest.mark.parametrize('test_data', yaml.safe_load(open("data.yaml")))
def test_baidu_search(test_data):
    with allure.step("打开百度网页"):
        driver = webdriver.Chrome()
        driver.get("http://www.baidu.com")
        driver.maximize_window()

    with allure.step(f"输入搜索词:{test_data}"):
        driver.find_element_by_id("kw").send_keys(test_data)
        time.sleep(2)
        driver.find_element_by_id("su").click()
        time.sleep(2)

    with allure.step("保存图片"):
        driver.save_screenshot("./result/a.png")
        allure.attach.file("./result/a.png", attachment_type=allure.attachment_type.PNG)

    with allure.step("关闭浏览器"):
        driver.quit()

allure.testcase用例标识,给定用例的链接,可以与用例的管理地址关联
allure.feature功能模块划分,方便管理和运行测试用例
pytest.mark.parametrize用来参数化测试用例
allure.step用来添加测试步骤,在测试报告里面会展示出来这个步骤说明

  1. 运行并打开报告
    pytest test_baidudemo.py -s -q --alluredir=./result/
    allure serve ./result/
    

    也可以使用如下方式运行:

    pytest test_baidudemo.py -s -q --alluredir=./result/
    allure generate ./result -o ./report/ --clean
    allure open -h 127.0.0.1 -p 8883 ./report/
    
  2. 其他

更多关于selenium自动化测试可参看selenium自动化测试

报告说明

测试报告首页中展示了此次测试的测试用例数量以及成功用例、失败用例、跳过用例的比例、测试环境、SUITES、FEATURES BY STORIES 等基本信息(当与 Jenkins 做了持续置成后,TREND 区域还将显示,历次测试的通过情况)

首页的左边栏,还从不同的维度展示测试报告的其他信息:

  1. Behaviors:按照 FEATURES 和 STORIES 展示测试用例的执行结果;
  2. Suites:Allure 测试报告将每一个测试脚本,作为一个 Suite。在首页里点击 Suites 区域内的任何一条 Suite,都会进入 Suites 页面
  3. Graphs:展示了此次测试结果的统计信息,比如测试用例执行结果状态、测试用例重要等级分布、测试用例执行时间分布等
  4. 测试用例详情页面:在 Suites 页面上点击任何一条测试用例,Suites 页面的右侧将展示这条用例的详细执行情况。在这个页面可以看到测试用例的每个步骤,以及每个步骤的执行结果,包括步骤里面添加的链接、图片、网页片段或者视频作为重要信息的补充。在这里可以一目了在的看到用例失败的原因。

参考