从接口测试到自动化测试:企业级接口自动化测试实践详解

news2024/11/26 6:19:10

从入门到精通!企业级接口自动化测试实战,详细教学!(自学必备视频)

摘要:

本文将使用Python中的requests库进行接口自动化测试,通过编写测试用例、封装请求方法等步骤,实现简单的接口自动化测试流程。假设我们需要测试一个获取用户信息的接口,其URL为https://example.com/user,返回格式为JSON。

 

 首先,我们需要安装requests库:

pip install requests

然后,我们可以编写测试用例。在这个例子中,我们将编写一个函数test_user_info(),该函数将发送GET请求到接口URL,并检查响应状态码和响应内容是否符合预期。以下是完整的测试用例代码:

import requests

def test_user_info():
    url = "https://example.com/user"
    expected_status_code = 200
    expected_response_content = {
        "name": "John Doe",
        "email": "johndoe@example.com",
        "age": 30
    }

    response = requests.get(url)
    assert response.status_code == expected_status_code
    assert response.json() == expected_response_content

在上面的代码中,我们定义了一个变量url,它存储了我们要测试的接口URL。我们还定义了两个变量expected_status_code和expected_response_content,分别表示期望的响应状态码和响应内容。接下来,我们使用requests库发送GET请求并将响应存储在变量response中。最后,我们使用assert语句检查响应状态码和响应内容是否符合预期。

在大型项目中,我们可能需要编写许多测试用例,并且每个测试用例都需要发送HTTP请求。为了避免重复编写发送请求的代码,我们可以封装一个请求方法。以下是一个简单的请求方法实现:

import requests

def send_request(url, method="GET", headers=None, params=None, data=None):
    if method == "GET":
        response = requests.get(url, headers=headers, params=params)
    elif method == "POST":
        response = requests.post(url, headers=headers, params=params, data=data)
    elif method == "PUT":
        response = requests.put(url, headers=headers, params=params, data=data)
    elif method == "DELETE":
        response = requests.delete(url, headers=headers, params=params)
    else:
        raise ValueError("Invalid HTTP method")

    return response

在上面的代码中,我们定义了一个函数send_request(),它接受URL、HTTP方法、请求头、查询参数和请求正文作为参数,并返回响应对象。我们使用if-elif语句根据传入的HTTP方法选择相应的requests库方法来发送请求。

现在我们已经有了请求方法和测试用例,我们只需要将它们结合起来。以下是结合后的测试用例代码:

import requests

def send_request(url, method="GET", headers=None, params=None, data=None):
    if method == "GET":
        response = requests.get(url, headers=headers, params=params)
    elif method == "POST":
        response = requests.post(url, headers=headers, params=params, data=data)
    elif method == "PUT":
        response = requests.put(url, headers=headers, params=params, data=data)
    elif method == "DELETE":
        response = requests.delete(url, headers=headers, params=params)
    else:
        raise ValueError("Invalid HTTP method")

    return response

def test_user_info():
    url = "https://example.com/user"
    expected_status_code = 200
    expected_response_content = {
        "name": "John Doe",
        "email": "johndoe@example.com",
        "age": 30
    }

    response = send_request(url)
    assert response.status_code == expected_status_code
    assert response.json() == expected_response_content

在上面的代码中,我们将send_request()方法引入测试用例test_user_info()中,使用它来发送HTTP请求。此后的流程与之前的测试用例类似,我们检查响应状态码和响应内容是否符合预期。

除了检查响应状态码和响应内容外,我们还可以对响应时间进行测试。以下是一个测量响应时间的测试用例:

import requests

def send_request(url, method="GET", headers=None, params=None, data=None):
    if method == "GET":
        response = requests.get(url, headers=headers, params=params)
    elif method == "POST":
        response = requests.post(url, headers=headers, params=params, data=data)
    elif method == "PUT":
        response = requests.put(url, headers=headers, params=params, data=data)
    elif method == "DELETE":
        response = requests.delete(url, headers=headers, params=params)
    else:
        raise ValueError("Invalid HTTP method")

    return response

def test_user_info():
    url = "https://example.com/user"
    expected_status_code = 200
    expected_response_content = {
        "name": "John Doe",
        "email": "johndoe@example.com",
        "age": 30
    }

    start_time = time.time()
    response = send_request(url)
    end_time = time.time()

    assert response.status_code == expected_status_code
    assert response.json() == expected_response_content
    assert end_time - start_time < 1 # 响应时间小于1秒

在上面的代码中,我们使用time模块测量请求时间,并添加了一个断言来确保响应时间小于1秒。

总结:接口自动化测试是现代软件开发中非常重要的一环。Python中的requests库提供了方便的HTTP请求方法,可以用于编写自动化测试脚本。通过封装请求方法和编写测试用例,我们可以轻松地进行接口自动化测试,并验证系统是否正常运行。

 【测试交流】:574737577icon-default.png?t=N3I4http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=sJBELCNYZGK2fxEjzFf-escM6pDK2rwO&authKey=K6oipi4uFQ8k2tPEF1cI%2BVOlne2JvdDhcyGascKzUsL%2FHTG1ntUXhD4ohG5oYAM2&noverify=0&group_code=574737577

自动化测试学习步骤结构图:

 

Python编程:

 

接口自动化测试:

 

WEB自动化测试:

 

App 自动化测试:

 自动化测试福利: 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Melis4.0[D1s]:9.测试cedar多媒体解码库,视频和lvgl混合显示

文章目录 1.测试audio_test命令播放mp31.1 finish命令中文件路径的写法&#xff08;测试&#xff09; 2.测试cedar_test 命令播放mp42.1 不清除logo图层&#xff0c;无法显示视频2.2 使用disp_layer_alpha_test命令清除logo图层&#xff0c;正常播放视频 3. lvgl设置3.1 ui图层…

Http 响应头 Transfer-Encoding : chunked 导致 浏览器客户端请求错误问题

生产环境服务器规划如下 服务器类型网络环境cal.comnginx外网192.168.7.15:9200tomcat内网192.168.7.16:9200tomcat内网sdd.comnginx内网192.168.7.15:9100tomcat内网192.168.7.16:9100tomcat内网 192.168.7.15和192.168.7.16是做个负载均衡。目前的需求是用户访问外网的cal.…

SIEM工具保护云数据安全

规范对云中敏感数据的访问、跟踪已批准和未批准的应用程序的使用情况以及检测基础架构中影子 IT 应用程序的使用情况&#xff0c;将有助于防止针对云的内部和外部威胁。由于组织的云边界超出了传统的网络边界&#xff0c;因此实施严格的策略来保护敏感数据&#xff0c;并获得对…

宠物界的“富士康”IPO,福贝宠物冲刺上交所主板

随着社会经济的不断发展&#xff0c;人们生活水平的提高&#xff0c;宠物经济逐渐成为了一个备受关注的话题。无论是对于宠物爱好者还是宠物经济从业者&#xff0c;宠物经济的重要性都不容忽视。福贝宠物自然也是宠物经济下的产物。 福贝宠物在上交所主板IPO的申请获得受理。本…

开源单用户客服系统源码-上传附件功能-elementui 异步上传文件【唯一客服开发商】...

之前开源的单用户客服系统&#xff0c;上传附件成功后&#xff0c;还不能展示出文件形式&#xff0c;今天把上传展示出文件形式给开发完善一下。 我想要实现的效果是&#xff0c;展示出文件的名称和大小信息 后端返回一个带有文件信息的json结果&#xff0c;前端把该信息组织一…

打造中国的Web3.0基座,张平院士谈“构建元宇宙及支撑技术“

在近期举办的全球元宇宙大会开幕式上&#xff0c;中国工程院院士、北京邮电大学教授张平出席大会并发表了题为《构建元宇宙及支撑技术》的开场演讲。 演讲中&#xff0c;张平院士分析阐述了理想的元宇宙技术运行状态。他表示&#xff0c;元宇宙需要实现大规模用户持续在线、高…

【JS】1678- 重学 JavaScript API - Broadcast Channel API

当我们网页需要在不同的浏览器窗口之间共享数据时&#xff0c;可能需要使用 WebSocket 或 WebRTC 等技术。但是&#xff0c;这些技术会过于复杂。而浏览器自带的 Broadcast Channel API[1] 可以让我们轻松地在不同浏览器窗口之间共享数据&#xff0c;而无需使用复杂的技术。 本…

Redis入门到实战(实战篇)缓存更新、穿透、雪崩、击穿!

Redis基础篇 Java面试宝典-redis 实战篇Redis 开篇导读 亲爱的小伙伴们大家好&#xff0c;马上咱们就开始实战篇的内容了&#xff0c;相信通过本章的学习&#xff0c;小伙伴们就能理解各种redis的使用啦&#xff0c;接下来咱们来一起看看实战篇我们要学习一些什么样的内容 短信…

电脑屏幕录制软件哪个好用?推荐这2款!

案例&#xff1a;怎样才能找到一款好用的电脑录屏工具&#xff1f; 【我工作时&#xff0c;需要经常录制电脑屏幕&#xff0c;而我现在使用的录屏工具不好用&#xff0c;十分影响我的工作效率。我需要一款好用的电脑录屏工具&#xff0c;小伙伴们有没有推荐&#xff1f;】 如…

Java并发编程之AQS

目录 一&#xff0c;什么是AQS二&#xff0c;AQS核心知识1&#xff0c;核心思想2&#xff0c;AQS中的共享状态值-state3&#xff0c; 同步队列为什么称为FIFO4&#xff0c; Condition队列-单向队列 三&#xff0c;具体实现1&#xff0c;独占模式下的AQS2&#xff0c;共享模式下…

RdViewer远控隐蔽利用及钓鱼攻击

本文转载于&#xff1a; https://mp.weixin.qq.com/s?__bizMzg4NzkwMDA5NQ&mid2247484000&idx1&sn56b24135aa0aa77a690ff29566341c4e&chksmcf8210b0f8f599a6eaa7743bc65ad4e79400839c40289a8f5407e9732e22a4ae693c0701d1b0&mpshare1&scene23&srci…

未来城市的无限可能

生命体&#xff1a;Mix ta没有棱角但又泾渭分明 冰冷而又生机勃勃 最近受《环球》杂志记者邀请&#xff0c;对未来城市展开了若干讨论&#xff0c;分享给大家&#xff1a; 《环球》杂志 未来城市是什么样子的&#xff1f;请用几个关键词或几句话描述。 我理想中的未来城市应该具…

蒙特卡洛方法的基本介绍和简单应用(求圆周率和定积分)

目录 一、什么是蒙特卡洛方法 二、蒙特卡洛方法的基本思想 三、用蒙特卡洛方法求圆周率 π 四、用蒙特卡洛方法求定积分 你听说过 "蒙特卡洛法" 吗&#xff1f;哦&#xff0c;那是一种计算不规则图形面积的计算机程序算法&#xff0c;具体做法是在软件中用大量的…

【银河麒麟V10】【服务器】麒麟容器常见问题

一、麒麟容器镜像下载链接 &#xff08;1&#xff09;kylin-V10-SP1-0711-x86_64 docker镜像下载链接&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/10WyBYRoOykqgnagjnoxdXw?pwdt4h5 提取码&#xff1a;t4h5 二、容器基础使用 #导入镜像 docker load < k…

6.100ASK_V853-PRO开发板支持MIPI摄像头

0.前言 ​ 100ASK_V853-PRO开发板支持4LINE的MIPI摄像头和2LINE的MIPI摄像头&#xff0c;使用百问网提供的Tina SDK包生成的镜像&#xff0c;系统已经配置好了&#xff0c;可以直接使用。本章介绍如何去适配一个MIPI摄像头&#xff0c;本文所用的2LINE的MIPI摄像头&#xff0c…

什么是应用交付网络(ADN)

从CDN到ADN CDN&#xff08;内容分发网络&#xff09;在90年代末受到麻省理工学院的启发并完成发明&#xff0c;00年代初成立第一家成功的CDN商业企业Akamai。CDN的目标是相对于最终用户在空间上分配服务&#xff0c;以提供高可用性和高性能。随着互联网的发展&#xff0c;CDN…

建筑行业搭建BI数据可视化平台,已成为大势所趋

建筑行业的项目管理是一个系统而复杂的过程&#xff0c;其重点主要是寻求造价、质量、工期等几个方面的平衡点&#xff0c;并且对项目的整个过程必须要有一个清晰和直观的了解。 因此可以通过BI数据可视化分析将各个节点的系统数据、业务数据完整的呈现&#xff0c;将各管理层…

数字孪生园区可视化大屏系统-广州华锐互动

工业园区是现代工业化生产的重要组成部分&#xff0c;也是推动经济发展和提升城市形象的重要载体。而数字孪生园区可视化大屏系统作为一种新兴的技术应用&#xff0c;可以为工业园区的建设、管理和发展带来很大的价值。 首先&#xff0c;数字孪生园区可视化大屏系统可以帮助工业…

[C++]普通二叉搜索树实现

目录 1 二叉搜索树的基本概念 2 二叉搜索树的构建 2.1 二叉搜索树的结点 2.2 搜索树类的结构 3 成员函数 3.1 插入 3.2 查找 3.3 删除&#xff08;重点&#xff09; 3.4 默认成员函数的辅助函数 4 普通的二叉搜索树的效率 1 二叉搜索树的基本概念 二叉搜索树又称二叉…

Java框架学习05(Spring事务详解)

1、什么是事务&#xff1f; 事务是逻辑上的一组操作&#xff0c;要么都执行&#xff0c;要么都不执行。 我们系统的每个业务方法可能包括了多个原子性的数据库操作&#xff0c;比如下面的 savePerson() 方法中就有两个原子性的数据库操作。这些原子性的数据库操作是有依赖的&…