Python接口自动化测试框架运行原理及流程

Python接口自动化测试框架运行原理及流程

自动化测试框架运行原理:自动化测试框架主要分为三个层次,分别是基础层、关键字层和逻辑层,其运行原理如下:

  1. 基础层:最底层的是基础层,它主要提供一些底层的API调用操作,例如HTTP请求、数据库操作等。

  2. 关键字层:在基础层的基础上,构建关键字层,即将常用的测试步骤封装成具有复用性的函数,其中每一个函数都代表着一个测试步骤。

  3. 逻辑层:最高层的逻辑层,是整个自动化测试框架的控制中心,负责将不同的测试步骤按照预定的顺序组合在一起,形成测试用例,相互配合执行。

自动化测试框架的流程:

  1. 确定测试用例:根据功能需求、用户需求、性能指标等,编写测试用例,包括用例编号、用例名称、用例描述、前置条件、步骤、预期结果等信息。

  2. 制定测试计划:针对测试用例,制定不同的测试计划,例如冒烟测试、功能测试、性能测试、兼容性测试、安全测试等等。

  3. 建立自动化测试框架:确定测试用例,以及对应的关键字,编写出测试框架的三个层次结构。

  4. 编写测试脚本:在测试用例和测试框架确定好后,可以利用Python编写测试脚本,通过调用测试框架的API,执行对应的测试步骤。

  5. 执行测试脚本:执行测试脚本时,测试框架会根据调用的API,执行对应的测试步骤,并根据前置条件、步骤、预期结果等信息进行判断,来判定测试用例是否执行成功。

  6. 生成报告:测试执行完成后,根据测试框架输出的日志,生成测试报告和缺陷报告,便于测试人员更好地进行分析和处理。

示例一:

例如,构建一个简单的自动化测试框架,测试一个获取token的接口。其测试用例和步骤如下:

  • 用例编号:001
  • 用例名称:获取token
  • 用例描述:测试获取token的接口
  • 前置条件:无
  • 步骤:
    1.发送请求,获取token
    2.返回值校验
  • 预期结果:返回正确的token

该测试用例可以通过以下关键字封装:

def send_reqeust(url, method, params):
    # 构造HTTP请求
    # 返回HTTP响应

def get_token():
    resp = send_reqeust(url, method, params)
    # 从响应中截取token
    return token

def check_response(resp, expected):
    # 进行响应和预期结果的比对
    assert resp == expected

def testcase001():
    # 获取token
    token = get_token()
    # 校验token响应值是否正确
    check_response(token, expected)

在测试脚本中可以通过调用这些关键字来完成测试用例的执行,例如:

testcase001()

示例二:

构建分层自动化测试框架,包括基础层、关键字层和逻辑层。

基础层:提供HTTP请求、数据库操作、日志记录等底层API调用操作。

例如,在HTTP请求底层API模块中,可以封装请求的各种方法:

def send_get_request(url, header=None, params=None):
    # 发送GET请求
    # 返回响应结果

def send_post_request(url, data=None, header=None, params=None):
    # 发送POST请求
    # 返回响应结果

def send_put_request(url, data=None, header=None, params=None):
    # 发送PUT请求
    # 返回响应结果

def send_delete_request(url, header=None, params=None):
    # 发送DELETE请求
    # 返回响应结果

关键字层:将基础层的API调用模块进行封装,构成测试步骤,例如:

def login(username, password):
    # 发送登录请求
    # 返回响应结果

def check_response(resp, expected):
    # 进行响应和预期结果的比对
    assert resp == expected

def testcase001():
    # 登录
    resp = login(username, password)
    # 校验响应值是否正确
    check_response(resp, expected)

逻辑层:整合测试用例,调用关键字完成测试执行。

例如在测试脚本中,可以完成用例调用,多个用例执行,及用例执行日志记录等功能。

from testcase import *

def run_testsuite(testsuit_list):
    # 执行测试用例
    # 记录执行日志

if __name__ == '__main__':
    run_testsuite([testcase001, testcase002])

以上是自动化测试框架的原理和流程,可以根据测试需求,构建自己的框架和模块,提高自动化测试效率和质量。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python接口自动化测试框架运行原理及流程 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 一篇文章入门Python生态系统(Python新手入门指导)

    一篇文章入门Python生态系统 Python是一门功能强大且易于上手的编程语言。在Python的生态系统中,有各种各样的库、框架和工具可供使用。本文将帮助新手入门Python生态系统,了解如何开始使用Python以及如何从中受益。 安装Python 在进入Python生态系统之前,首先需要安装Python。我们可以从官方网站 python.org 下载Py…

    python 2023年5月14日
    00
  • 详解Python文件修改的两种方式

    下面是详解Python文件修改的两种方式的完整攻略。 方式一:使用Python内置的文件操作函数 Python 提供了内置函数 open() 和 close() 用于打开和关闭文件,以及提供了一些文件操作的方法。通过这些函数,我们可以直接打开一个文件,读取或修改其中的内容,最后保存并关闭文件。 打开文件 使用内置函数 open() 可以打开一个文件,函数语法…

    python 2023年6月5日
    00
  • pip报错“ValueError: invalid literal for int() with base 10: ‘3.4’”怎么处理?

    原因 “ValueError: invalid literal for int() with base 10: ‘3.4’” 错误通常是以下原因引起的: 版本号格式错误:如果您的版本号格式不正确,则可能会出现此错误。在这种情况下,您需要检查版本号格式是否正确。 版本号包含非数字字符:如果您的版本号包含非数字字符,则可能会出现此错误。在这种情况下,您需要删除版…

    python 2023年5月4日
    00
  • 用Python解析XML的几种常见方法的介绍

    在Python中,我们可以使用多种方法解析XML文件。以下是用Python解析XML的几种常见方法的介绍,包含两个示例。 示例1:使用ElementTree解析XML ElementTree是Python标准库中用于解析XML的模块。以下是一个示例,可以使用ElementTree解析XML: import xml.etree.ElementTree as E…

    python 2023年5月15日
    00
  • Python学习笔记之变量与转义符

    Python学习笔记之变量与转义符 一、什么是变量 在程序中,变量是一种存储值的容器。Python中的变量不需要显式声明,变量的类型也可根据值自动推导。例如: number = 10 string = ‘Hello, world!’ 变量名后跟等于号,等于号后跟值。值可为数值、字符串、列表、字典等。Python在遇到变量时自动为其分配内存。 另外,Pytho…

    python 2023年5月13日
    00
  • 详解YAML 和 JSON 的区别

    YAML和JSON都是常用的数据序列化格式,但它们在表达式法和应用场景上有很大的区别。 YAML和JSON的区别 语法 JSON:JSON是JavaScript Object Notation的缩写,是一种基于JavaScript语法的文本格式。其基本语法结构如下: { "name": "John", "ag…

    python-answer 2023年3月25日
    00
  • 13个有趣又好玩的Python游戏代码分享

    以下是详细讲解“13个有趣又好玩的Python游戏代码分享”的完整攻略,包含两个示例说明。 1. 猜数字游戏 猜数字游戏是一种简单而有趣的游戏,玩家需要猜测一个随机生成的数字。以下是一个使用Python实现猜数字游戏: import random number = random.randint(1, 100) guess = int(input("…

    python 2023年5月14日
    00
  • Python pandas 数据帧拆分

    【问题标题】:Python pandas dataframe splittingPython pandas 数据帧拆分 【发布时间】:2023-04-02 21:16:01 【问题描述】: 我有这种数据框,我想将其拆分为单独的数据框: A B C Mark 3 5 6 T 4 5 2 T 3 4 5 B 5 6 7 B 3 4 5 T 2 5 2 T 例如,…

    Python开发 2023年4月8日
    00
合作推广
合作推广
分享本页
返回顶部