百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

接口自动化测试之框架模型搭建(java自动化接口测试框架)

ccwgpt 2024-10-04 14:02 23 浏览 0 评论

一、前言

小伙伴们大家好呀,今天笔者给大家带来了一篇关于python接口自动化测试的文章,这篇文章主要讲解Python接口自动化测试框架模型的搭建,主要介绍如何设计框架,以及基础的框架运行等,话不多说,让我们一起看看吧~

二、框架搭建流程

2.1 项目创建

框架搭建前必定是以一个项目的形式存在的,故此我们需要新建一个项目,你可以通过Open打开原有项目的一个包,以此来独立成一个项目,也可以直接使用New Project来创建一个新项目。

2.2 README文件

在任何一个项目中,我们都可以看到README这个文件,README文件是一个项目的说明文档,其中会包括基础的文件说明、框架搭建及维护的作者,框架认知、框架体系、框架结构、框架作用、项目说明、代码使用规范和注意事项等内容,具体内容通常依据个人或项目需要进行文件说明,文件可以采用md形式,也可以采用txt形式,可以附上一些说明,例如:

2.3 .gitignore文件

通常而言,我们项目中的代码需要进行版本控制,行业中常见的是svn与git,.gitignore文件用于git版本控制,而.gitignore文件的作用是:将特定的文件移除,不会进入至版本控制系统当中,不会进行上传。

比如代码运行所产生的缓存文件,这些缓存文件大多数会放入至__pycache__文件夹中,故此我们可以选择该文件夹,不纳入版本控制系统。还有项目创建所生成的,idea/文件夹,我们也可以不纳入版本控制。

在真实项目中需要特别注意,涉及到敏感数据,绝对不要放入至版本控制当中,例如测试账号、数据库地址等等,这样会暴露项目内容,严重会追究法律责任,如果你是在看本人文章的读者且正在使用公司项目实战,请务必小心!

不纳入版本控制的做法很简单,只需要在.gitignore文件中添加对应的文件夹或文件即可,添加一个后并换行可添加第二个,则代表该文件或文件夹不纳入版本控制,后续的具体内容有兴趣大家可以继续了解。

2.4 什么是测试框架?

框架在生活中也能够比较常见,例如建造一座高楼大厦时,我们需要固定好这个大楼的外层结构,确保建造时大楼是笔直的,确保不会晃动,这就是高楼大厦的框架,而房屋的室内室外等均属于填充内容。

测试框架也是如此,我们需要搭建起一个自动化的测试框架,可重复设计和利用的内容,写的代码就是在进行框架填充,代码中会包括:

"""
工具、组件。-- 专门处理excel的工具、记录logger日志的工具、生成日志的工具等等
"""

框架即意味着规则、规矩,任何人使用框架不能够违背,框架没有标准答案,只要你自己是框架的设计者,那么就是自己掌握话语权,好比我们在导入其他人所写的框架时,也必须遵守它们框架的语法、规则。??

2.5 分层设计

什么是分层设计?分层设计的概念是如何进行模块与包的划分,每一个目录就好比一个部门,各司其职,最后的结果就会接近于完美,而独立划分就是分层设计的思想与理念。

为什么需要进行分层设计?相信大家通过下图能够有基本概念,分层设计就是为了更好的进行框架整合、代码管理与维护,在某个"目录"出现异常时,我只需要对特定的"目录"进行管理即可有效解决问题,而不会对其他目录进行牵连。

"""
框架结构
- common      公共方法目录
- testcase    测试用例目录
- data        测试数据目录
- reports     测试报告目录
- config      配置文件目录
- logs        日志系统目录
- funcs       被测函数目录
- run.py      项目启动文件

"""

2.6 框架搭建

2.6.1 公用目录(common)

新建一个Python package,命名为common,之所以我们要创建Python包而不是一个文件夹的主要原因是Python package中有__init__,如果没有这个文件,可能会在导入文件时失败。故此选择Python package。通常而言,如果这个文件夹里有Python文件,那么我们会使用Python package进行创建。

公用目录是通用的代码内容,可以理解成无论该框架如何进行移动、修改,公用目录内容均可以保持不变且在其他项目中,公用目录的内容可以完全复制过去进行使用。

2.6.2测试用例目录(testcase)

testcase中存放的主要是自动化测试用例代码,里面包括各类的函数,因为存在py文件,故此我们需要Python package新建。

2.6.3 测试数据目录(data)

data中主要存放的是测试数据,数据可以是Excel的形式,也可以是Python模块的形式,故此我们这里的创建还是使用Python package。

2.6.4 测试报告目录(reports)

测试报告的存放路径在reports,最终的测试报告不是Python模块,大多数是以html的方式存在的,在网页中可展示基础的数据信息和图表类信息,故此我们在创建时只需要建普通的文件夹即可,而不需要Python package。

2.6.5 配置文件目录(config)

配置文件目录为config,可能会包括数据库地址、用户名密码等常见内容,配置文件有可能会存在Python模块,我们仍然选用Python package。

2.6.6 日志存放目录(logs)

日志存放目录会存放关于程序运行的日志内容,同样使用Python package创建。

2.6.7 被测函数目录(funcs)

被测函数目录主要是用于Python函数的代码存放,存放开发的Python函数文件,使用Python package创建。

2.6.8 运行文件(run.py)

在顶级目录创建Python文件,名为run,当执行run.py时则会执行所有的测试用例,主要起到程序运行作用。

2.7 测试函数

在funcs下创建login.py,完成被测函数的填写,在testcase下创建test_login,补充一条测试用例:

"""login.py 被测函数"""
def login(username=None, password=None):
    if username is None or password is None:
        return {"code": 400, "msg": "用户名或密码为空" }
    if username == "天天团" and password == "123456":
        return {"code": 200, "msg": "登录成功" }
    return {"code": 300, "msg": "用户名或密码错误" }
""" test_login.py 测试用例"""
import unittest
from funcs.login import login

class TestLogin(unittest.TestCase):
    def test_login_success(self):
        username = "天天团"
        password = "123456"
        expected = {"code": 200, "msg": "登录成功" }
        actual = login(username, password)
        self.assertEqual(expected, actual)

如上图所示,执行结果为一条测试用例,耗时0.003s,测试通过。代表流程已经走通了。
2.8 执行文件

在run.py添加执行代码,并预备测试报告生成

import unittest
from unittestreport import TestRunner
from datetime import datetime

suite = unittest.defaultTestLoader.discover("testcase")

# 当前时间
data_str = str(datetime.now().strftime("%Y-%m-%d__%H-%M-%S"))
# 测试报告名称
reports_name = data_str + "项目框架演示测试报告.html"

runner = TestRunner(suite,
                    tester="天天团",
                    report_dir="reports",
                    filename=reports_name)

runner.run()

2.9 测试报告

文件输出到了reports:

上半部分展示了一个基本的数据汇总,用例的总数、成功失败、错误等用例数量的具体数值,但这非实战阶段,故此测试用例只有1条演示的用例

中间的部分会有一个图表,图表的形式呈现上述的数据

最下层是详细信息,可以查看哪个类、哪个方法测试通过还是失败,可查看详情,也支持结果的筛选:

2.10 路径处理

我们在项目中还需要使用到路径处理,有些时候我们需要读取对应的路径来获取我们想要的文件或数据,那么需要使用到os路径模块,此处不过多的解释,大家可以先行简单了解。

import os
# 获取当前文件路径
current_path = os.path.abspath(__file__)

# 获取config文件夹路径
config_dir = os.path.dirname(current_path)

# 项目根目录
root_dir = os.path.dirname(config_dir)

# data 目录
data_dir = os.path.join(root_dir, "data")

# xlsx文件目录
case_path = os.path.join(data_dir, "cases.xlsx")

2.11 知识小结

"""
框架执行:
第一步:框架设计、模块
第二步:在cases里面写自动化测试用例
第三步:在run.py收集测试用例,生成测试报告

后续实战阶段讲解:
第四步:封装通用的测试工具,公共代码
第五步:在用例当中调用log变量以增加日志
第六步:实现excel的数据驱动
"""

总结

这篇文章就分享到这里了哟,喜欢的小伙伴可以点赞收藏评论加关注哟,关注我每天给你带来不同的惊喜。

相关推荐

十分钟让你学会LNMP架构负载均衡(impala负载均衡)

业务架构、应用架构、数据架构和技术架构一、几个基本概念1、pv值pv值(pageviews):页面的浏览量概念:一个网站的所有页面,在一天内,被浏览的总次数。(大型网站通常是上千万的级别)2、u...

AGV仓储机器人调度系统架构(agv物流机器人)

系统架构层次划分采用分层模块化设计,分为以下五层:1.1用户接口层功能:提供人机交互界面(Web/桌面端),支持任务下发、实时监控、数据可视化和报警管理。模块:任务管理面板:接收订单(如拣货、...

远程热部署在美团的落地实践(远程热点是什么意思)

Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。在阅读本文之前,建议大家先熟悉一下Spring源码、SpringMVC源码、SpringBoot...

springboot搭建xxl-job(分布式任务调度系统)

一、部署xxl-job服务端下载xxl-job源码:https://gitee.com/xuxueli0323/xxl-job二、导入项目、创建xxl_job数据库、修改配置文件为自己的数据库三、启动...

大模型:使用vLLM和Ray分布式部署推理应用

一、vLLM:面向大模型的高效推理框架1.核心特点专为推理优化:专注于大模型(如GPT-3、LLaMA)的高吞吐量、低延迟推理。关键技术:PagedAttention:类似操作系统内存分页管理,将K...

国产开源之光【分布式工作流调度系统】:DolphinScheduler

DolphinScheduler是一个开源的分布式工作流调度系统,旨在帮助用户以可靠、高效和可扩展的方式管理和调度大规模的数据处理工作流。它支持以图形化方式定义和管理工作流,提供了丰富的调度功能和监控...

简单可靠高效的分布式任务队列系统

#记录我的2024#大家好,又见面了,我是GitHub精选君!背景介绍在系统访问量逐渐增大,高并发、分布式系统成为了企业技术架构升级的必由之路。在这样的背景下,异步任务队列扮演着至关重要的角色,...

虚拟服务器之间如何分布式运行?(虚拟服务器部署)

  在云计算和虚拟化技术快速发展的今天,传统“单机单任务”的服务器架构早已难以满足现代业务对高并发、高可用、弹性伸缩和容错容灾的严苛要求。分布式系统应运而生,并成为支撑各类互联网平台、企业信息系统和A...

一文掌握 XXL-Job 的 6 大核心组件

XXL-Job是一个分布式任务调度平台,其核心组件主要包括以下部分,各组件相互协作实现高效的任务调度与管理:1.调度注册中心(RegistryCenter)作用:负责管理调度器(Schedule...

京东大佬问我,SpringBoot中如何做延迟队列?单机与分布式如何做?

京东大佬问我,SpringBoot中如何做延迟队列?单机如何做?分布式如何做呢?并给出案例与代码分析。嗯,用户问的是在SpringBoot中如何实现延迟队列,单机和分布式环境下分别怎么做。这个问题其实...

企业级项目组件选型(一)分布式任务调度平台

官网地址:https://www.xuxueli.com/xxl-job/能力介绍架构图安全性为提升系统安全性,调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯;调度中心和执...

python多进程的分布式任务调度应用场景及示例

多进程的分布式任务调度可以应用于以下场景:分布式爬虫:importmultiprocessingimportrequestsdefcrawl(url):response=re...

SpringBoot整合ElasticJob实现分布式任务调度

介绍ElasticJob是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目ElasticJob-Lite和ElasticJob-Cloud组成。它通过弹性调度、资源管控、...

分布式可视化 DAG 任务调度系统 Taier 的整体流程分析

Taier作为袋鼠云的开源项目之一,是一个分布式可视化的DAG任务调度系统。旨在降低ETL开发成本,提高大数据平台稳定性,让大数据开发人员可以在Taier直接进行业务逻辑的开发,而不用关...

SpringBoot任务调度:@Scheduled与TaskExecutor全面解析

一、任务调度基础概念1.1什么是任务调度任务调度是指按照预定的时间计划或特定条件自动执行任务的过程。在现代应用开发中,任务调度扮演着至关重要的角色,它使得开发者能够自动化处理周期性任务、定时任务和异...

取消回复欢迎 发表评论: