博客
关于我
pytest简介及jenkins集成
阅读量:806 次
发布时间:2023-03-05

本文共 1974 字,大约阅读时间需要 6 分钟。

pytest 实用指南

1. pytest 简介

pytest 是一个基于 unittest 的现代化单元测试框架,具有自动发现测试模块和方法的能力。其独特之处在于:

  • 断言:仅需使用 assert + 表达式即可完成验证
  • ** fixtures**:支持在测试会话、模块、类或函数级别定义数据准备和清理工作
  • 灵活性:支持共享前置和后置操作,通过 conftest.py 实现

2. 安装命令

  • 安装 pytest:pip install pytest
  • 安装 HTML 报告插件:pip install pytest-html
  • pytest 插件地址:可通过官方文档获取

3. 测试用例收集规则

  • 文件名规则:匹配 test_*.py*_test.py
  • 函数命名规则:以 test_ 开头
  • 类命名规则:以 Test 开头且不包含 __init__ 方法
  • 标签支持:可在测试用例、测试类或模块文件中打标签,支持按标签过滤运行用例
    • 标签定义方式:在测试用例前使用 @pytest.mark.标签名 或在类/模块中定义

4. 测试用例打标签

  • 方式1:在测试用例前直接使用 @pytest.mark.标签名
  • 方式2:在测试类或模块中定义标签
    pytestmark = pytest.mark.标签名pytestmark = [pytest.mark.标签1, pytest.mark.标签2]  # 多标签模式
  • 示例
    @pytest.mark.slowdef test_login_success(self, init_driver):    init_driver[1]....

5. Fixtures 功能

  • 定义方式:在 conftest.py 文件中定义
    def pytest_configure(config):    config.addinivalue_line("markers", "smoke1:标记只运行冒烟用例")    config.addinivalue_line("markers", "demo1:示例运行")
  • 使用方式
    • 测试用例直接调用
    • 通过 @pytest.mark.usefixtures("fixture_name") 装饰
    • 使用 pytest.fixture 装饰器定义 fixture

6. 参数化测试用例

  • 使用 @pytest.mark.parametrize 定义参数化规则
    @pytest.mark.parametrize("参数名", [(1, 2, 3), (4, 5, 6)])def test_add(self, a, b, c):    assert a + b == c
  • 组合参数化
    @pytest.mark.parametrize("x", [1, 2])@pytest.mark.parametrize("y", [2, 3])def test_foo(x, y):    pass
  • 生成 4 个组合:1,21,32,22,3

7. 失败重试

  • 安装插件 pytest-rerunfailurespip install pytest-rerunfailures
  • 命令行使用:
    pytest --reruns 2  # 失败用例重试 2 次pytest --reruns-delay 5  # 失败用例间隔 5 秒重试

8. 测试报告

  • HTML 报告:安装 pytest-html 插件,使用命令生成报告
    pytest --html=report/test.html
  • JunitXML 格式:使用 --junitxml 生成 XML 报告
    pytest --junitxml=report/test.xml
  • Allure 报告:安装 allure-pytest 插件,使用命令生成 Allure 报告
    pytest --alluredir=report/allure

9. Jenkins 集成

  • 安装 Allure Jenkins 插件
  • 配置路径:D:\allure-2.13.5
  • 在 Jenkins 中选择 Allure 报告并配置路径

10. 分布式测试

  • master/slave 模式
    • master:Jenkins 服务器,负责任务分配
    • slave:执行机,负责执行任务并反馈结果
  • 节点管理
    • 新建节点时选择“随机选取”
    • 可指定执行器数量、远程工作目录、标签等
    • 启动方式:通过 Java Web 连接或命令行启动

11. 配置节点

  • 节点属性:设置环境变量和工具路径
  • 连接方式:下载 slave-agent.jnlp 直接运行或作为系统服务安装
  • 启动方式:可通过命令行启动节点

通过以上配置,pytest 可以帮助开发者高效、可靠地执行单元测试任务,并生成多种样式的测试报告。

转载地址:http://jnafk.baihongyu.com/

你可能感兴趣的文章
Python rsa 加密
查看>>
Python RSA操作
查看>>
Python轻松实现统计学中重要的相关性分析
查看>>
Python scrapy 常见问题及解决 【遇到的坑】
查看>>
Python Seborn热图数据的动态更新
查看>>
Python Seborn绘制空白直方图
查看>>
Python Selenium - 获取href值
查看>>
Python Selenium实现自动化测试及Chrome驱动使用!
查看>>
Python Selenium搭建UI自动化测试框架
查看>>
Python Selenium模块详解
查看>>
Python selenium爬取影评生成词云图
查看>>
python selenium自动化测试报告
查看>>
Python selenium自动化测试框架实战 —— 登录测试案例
查看>>
Python Selenium设计模式 —— POM
查看>>
Python Serial:如何使用 read 或 readline 函数一次读取多个字符
查看>>
Python set([]) 如何检查两个对象是否相等?一个对象需要定义哪些方法来自定义它?
查看>>
Python setup.py:数据文件无法复制目录:不存在或不是常规文件
查看>>
Python setuptools sdist:仅安装版本化文件
查看>>
Python Shell下使用matplotlib
查看>>
Python Slice How-to,我知道Python Slice,但我怎么才能使用内置的Slice对象呢?
查看>>