【自动化测试】关键字驱动接口自动化测试

news/发布时间2024/5/21 4:59:19


1. 概念:
  在软件测试领域,"数据驱动"和"关键字驱动"是两种自动化测试的设计模式, 它们都旨在提高测试效率,减少重复劳动,但它们的实现方式和应用场景有所不同。

  (1) 数据驱动(Data-Driven Testing, DDT):

   **优点**
    a. 可变数据:测试数据的输入和预期输出是从外部数据源获取(如数据库、表格)
    b. 高度抽象:测试逻辑与数据分离,使得测试逻辑可以复用于不同的数据
    c. 易于维护:测试数据的更改不需要修改测试脚本,便于非技术背景的测试人员操作。

   **缺点**
    d. 灵活性较低:如果测试逻辑复杂,可能需要编写复杂的脚本来处理不同的数据。
    e. 维护成本:随着测试数据量的增加,数据的管理和维护较为频繁。
  (2) 关键字驱动(Keyword-Driven Testing, KDT)
    关键字驱动是数据驱动测试的扩展,它不仅将测试数据外部化,还将测试操作(关键字)外部化。在这种方法中,关键字代表了一系列的测试步骤或操作,这些关键字通常与具体的测试脚本或函数  关联,有效提高了自动化测试的灵活性。

2. 关键字驱动结合实际应用场景的实现
  (1) 数据源选用excel表格维护,上手门槛低,且可自定义增加外部开关或基础信息等配置,随时可改。
  (2) 接口收集:实现快速生成接口自动化测试所需的数据源文件
  (3) 关键字触发测试的颗粒度:一个关键字对应一个接口表格所有接口,类似数据驱动 (关键字与具体测试类关联)
                 一个关键字对应表格中的某一个接口动作,如:发券、核销等 (关键字与具体测试函数关联)
  (4) 降低测试数据维护的成本, 借鉴Jmeter, excel中params支持使用内置变量,如:
      ${mobile} #随机生成一个11位手机号,不区分号段
      ${date} #当前日期,形如:2023-10-31
      ${time} #当前时间,形如:2023-10-31 16:05:53
  (5) 支持失败重试机制:若某一个接口失败,则测试会话等待n秒后重试该接口
  (6) 适配不同场景下的接口执行,统一处理认证信息(cookies,token)和请求方式(GET,POST,PUT,DELETE,PATCH)
  (7) 断言方式:优先以数据源中填写的预期结果作为断言,若无则使用接口通用断言
  (8) 通知:测试执行完成后封装测试报告,发送邮件或钉钉通知
  (9) 测试框架选定pytest,利用@pytest.mark.{keyword}修饰器机制,以标记代表关键字

3. 【pytest】基础干货
 (1) pytest中的脚本设计原则

  • 文件名以 test_*.py 文件和*_test.py
  • 以test_ 开头的函数
  • 以Test开头的类,不能包含 __init__ 方法
  • 以test_开头的类里面的方法
  • 所有的包package必须要有__init__.py 文件

 (2) pytest中的脚本运行指令语法

  • pytest #运行当前目录下所有的测试用例
  • pytest xx.py #运行xx.py脚本中的所有测试用例
  • pytest xx.py::TestClass #运行xx.py脚本中某一个类的所有测试用例
  • pytest xx.py::test_method #运行xx.py脚本中的某一个方法
  • pytest xx.py::TestClass::test_method #运行xx.py脚本中某一个类中的某一个方法
  • pytest -m login #运行用@pytest.mark.login 装饰器修饰的所有测试用例

 (3) pytest-html生成html报告可能遇到的问题

  Q1: pytest --html=report.html #将会在当前目录下生成名为report.html的测试报告,但是css是独立的,分享报告样式会丢如何处理?
  A1:[推荐] pytest --html=test_report.html --self-contained-html #生成合并css样式后的html测试报告
  Q2:  生成的report.html报告里中文乱码如何处理?
  A2:utf-8改为GBK,修改python路径\Lib\site-packages\pytest_html内的html_report.py
    head = html.head(html.meta(charset="utf-8"), html.title(self.title), html_css)

 (4) pytest中如何使用logging记录测试日志到.log文件中?
  借助pytest.ini配置日志的级别、日志格式、写入文件等信息

4. 框架逻辑图

 

5. 源码已上传gitee.com

6. 实际使用方式

  • 指令触发, 命令样例:pytest -m crm --html=test_report.html --self-contained-html -p no:warnings
  • 结合Jenkins,以job形式触发
  • 在测试平台中封装触发指令,供页面调用

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/88776214.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

数仓安全:数据脱敏技术深度解析

GaussDB (DWS)产品8.1.1版本发布数据脱敏特性,提供指定用户范围内列级敏感数据的脱敏功能,具有灵活、高效、透明、友好等优点,极大地增强产品的数据安全能力。本文分享自华为云社区《GaussDB(DWS)安全管理之数据脱敏原理与使用方法介绍》,作者: VV一笑。 1. 前言适用版本:…

python教程10-元祖

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。因此很少使用 元组使用小括号 ( ),列表使用方括号 [ ] 元组中只包含一个元素时,需要在元素后面添加逗号 , ,否则括号会被当作运算符使用:元祖调用:修改元祖 元组中的元素值是不允许修改的,但我们可以对元组进行连…

Selenium4自动化测试4--元素定位By.XPATH,元素定位最佳顺序

7-通过xpath定位,By.XPATHxpath是什么?XPath 是一门在 XML 文档中查找信息的语言xml是什么?XML(可扩展标记语言),主要用于传输数据为什么可以使用xpath定位html? XPath(XML路径语言)是一种用于在XML文档中定位元素的语言,它可以用于定位HTML文档中的元素。尽管XML和H…

前端技术选型时有用的网站

npm-compare.com比如我们想比较 react-query和 swr,可以访问 https://npm-compare.com/react-query,swr 查看结果,页面提供了下载量,star 数量,lisense 等的对比,方便我们做出决策。bundlephobia.com比较完了这些,我们可能还想知道哪个包的体积更小,更轻量,这时可以使用…

mac本地搭建ollama

mac本地搭建ollama webUI *简介:ollama-webUI是一个开源项目,简化了安装部署过程,并能直接管理各种大型语言模型(LLM)。本文将介绍如何在你的macOS上安装Ollama服务并配合webUI调用api来完成聊天。 开源地址https://github.com/812781385/ollama-webUI.git,开源不易感谢s…

[转帖]TLAB(Thread Local Allocation Buffer)

https://www.cnblogs.com/Chary/p/18034613 TLAB是虚拟机在堆内存的eden划分出来的一块专用空间,是线程专属的。在虚拟机的TLAB功能启动的情况下,在线程初始化时,虚拟机会为每个线程分配一块TLAB空间,只给当前线程使用,这样每个线程都单独拥有一个空间,如果需要分配内存,…