在自动化测试中,生成详尽的测试报告非常重要。本文将介绍如何使用 pytest
生成完整的测试报告,包括异常处理、断言、日志记录、前置条件、后置条件,以及在测试失败时截取 Android 设备屏幕截图的功能。通过本文,你将学会如何构建一个强大的测试框架,为你的项目提供全面的测试支持。
1. 环境准备
在开始之前,请确保安装了必要的 Python 库。你可以使用以下命令安装:
pip install pytest pytest-html pytest-logger
pip install pillow # 用于处理截图
2. 项目结构
我们将按照以下项目结构来组织代码:
/test_project
├── tests/
│ ├── test_sample.py
├── conftest.py
├── pytest.ini
├── logs/
│ └── test.log
├── screenshots/
│ └── failure.png
tests/
目录存放测试用例。conftest.py
文件配置测试的前置和后置条件。pytest.ini
文件用于配置 pytest 的默认选项。logs/
目录用于存放测试日志。screenshots/
目录用于存放测试失败时的截图。
3. 配置文件 pytest.ini
pytest.ini
文件配置了基本的 pytest 选项,包括生成 HTML 报告、日志记录和控制台输出的配置。
[pytest]
addopts = --html=report.html --self-contained-html --log-cli-level=INFO --log-file=logs/test.log --capture=tee-sys
log_cli = true
log_cli_level = INFO
log_file = logs/test.log
log_file_level = INFO
--html=report.html
: 生成 HTML 格式的测试报告。--log-cli-level=INFO
: 设置控制台输出的日志级别为 INFO。--log-file=logs/test.log
: 将日志记录到logs/test.log
文件。--capture=tee-sys
: 同时捕获 stdout 和 stderr 的输出。
4. 配置文件 conftest.py
conftest.py
文件定义了测试的前置和后置条件,以及测试失败时截取 Android 设备屏幕截图的逻辑。
import pytest
import logging
import os
from datetime import datetime
from PIL import ImageGrab
import subprocess
@pytest.fixture(scope="function", autouse=True)
def