做网站最好的公,ftp网站地图怎么做,工程公司取名字参考大全,wordpress弹窗留言开篇碎碎念
接口测试自动化好处
显而易见的好处就是解放双手#x1f600;。
可以在短时间内自动执行大量的测试用例通过参数化和数据驱动的方式进行测试数据的变化#xff0c;提高测试覆盖范围快速反馈测试执行结果和报告支持持续集成和持续交付的流程
使用Requestspytes…
开篇碎碎念
接口测试自动化好处
显而易见的好处就是解放双手。
可以在短时间内自动执行大量的测试用例通过参数化和数据驱动的方式进行测试数据的变化提高测试覆盖范围快速反馈测试执行结果和报告支持持续集成和持续交付的流程
使用Requestspytestallure搭建测试框架的目的 简化接口测试编写 Requests库是 Python 的一个优雅且简单的 Http库可以很方便地发送 http 请求接收和处理接口返回的响应数据 强大的断言和校验功能 Pytest 是一个功能强大的测试框架提供丰富的断言功能用于验证接口响应的正确性。 美观的测试报告 Allure是一个开源的测试报告生成工具可以生成漂亮、交互式和易于理解的测试报告。 持续集成 使用RequestsPytestAllure搭建的框架可以与持续集成和自动化流程集成实现快速的接口测试。
搭建过程
环境准备 安装requests、pytest、allure的方法 pip install requests pip install pytest pip install allure-pytest requests、pytest 的安装很简单这里主要讲讲如何安装 allure。 Windows 安装 allure java 安装 下载JDK 首先我们需要下载 java 开发工具包 JDK下载地址www.oracle.com/java/techno…在下载页面中根据自己的系统选择对应的版本本文以 Window 64位系统为例 下载后工具包 jdk 后根据提示进行即可安装 jdk 的时候也会安装 jre一并安装就可以了。安装过程中可以自定义安装路径等信息我选择的安装目录为 D:\Program Files \ 配置环境变量 安装完成后哦搜索框输入”编辑系统环境变量“。或此电脑右键后选择属性选择高级系统设置 在系统属性里点击环境变量 在系统变量中设置属性 JAVA_HOME 现在我也找了很多测试的朋友做了一个分享技术的交流群共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源没人解答问题坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化性能安全测试开发等等方面有一定建树的技术大牛
分享他们的经验还会分享很多直播讲座和技术沙龙
可以免费学习划重点开源的
qq群号110685036 3. PATH 设置 %JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin;allure 命令行工具安装
allure命令行工具 allure是一个命令行工具需要去github上下载最新版github.com/allure-fram…
下载完成后解压我是放在D盘 把bin目录添加到环境变量Path下 注意 cmd命令行运行 java、javac、allure可能表现安装未成功出现这种情况时可以先选择重启试试。
框架整体结构
名称说明apiapiconfig配置文件存放setting.ini配置文件主要配置接口域名和mysql数据库信息corerequest 请求方法封装、关键字返回结果类data存放测试用例数据log日志report测试报告数据testcase测试方法utils工具类pytest.inipytest 配置文件为运行项目的相关参数requirements.txt相关依赖包及版本
测试代码运用了代码分层思想具体往后看。 在testcases文件夹中不做接口请求和返回值的操作用一个方法A代替参数为请求参数方法A中调用B方法B方法接收组装好的参数包含headersB方法调用C方法C方法接收请求参数参数为接口路径不包含域名和 **kwargs接收B方法中组装好的参数 C方法参数为url接口请求参数 **kwargs 测试用例
创建测试文件并编写测试方法 1.py测试文件必须以“test ”开头或“ test”结尾 2测试方法必须以“test_”开头 3测试类必须以Test开头 使用 Pytest 提供的装饰器 “pytest.mark” 来标记测试用例其中“pytest.mark.parametrize ”用于参数化测试用例通过装饰器可以将多个参数传递给测试函数。allure.feature() 是Allure插件提供的一个装饰器用于定义测试报告中的feature敏捷开发场景。通过使用该装饰器可以将测试用例按照功能模块进行分类展示提供测试报告可读性。
如下是用户登录的一个例子test_get_token 函数被标记为参数化测试用例通过”pytest.mark.parametrize“传递一个参数data和对应的值。在测试函数中可以直接使用传递的参数进行测试逻辑验证请求接口返回是否通过断言返回状态和登录令牌。
## test_user.py
allure.feature(用户模块)
class TestUser:pytest.mark.parametrize(data, get_data()[user_login])allure.story(登录-获得token)allure.title(登录获取令牌测试用例)def test_get_token(self,data):result login(data)assert result[body][success] is Trueassert len(result[body][accessToken]) ! 0 发送请求和处理响应
调用requests库发送http请求将data参数中的请求方式、参数和请求体通过调用 api_util_new.do_request()发送请求使用response接收接口请求的响应结果并将响应结果处理后返回。
def login(data):获取令牌:param json_data:return:response client_api.do_request(urldata[url], methoddata[method], jsondata[data])return process_response(response)以下是对于接口请求响应结果的处理使用字典ResultResponse存储处理后的response检查请求响应状态代码以确定请求是否成功并提取响应内容通过日志打印出来方便定位问题。
def process_response(response):ResultResponse {}if response.status_code 200 or response.status_code 201:ResultResponse[success] TrueResultResponse[body] response.json()else:ResultResponse[success] Falselogger.info(请求状态异常)logger.info(响应内容 json.dumps(response.json(), ensure_asciiFalse))return ResultResponse封装 HTTP 请求的类 RestClient在类方法 do_request() 中使用 request() 方法接收接口url接口请求 method 和可选的其他关键字参数。在 request() 方法中传入的 methodGET、POST、PUT、DELETE 使用 requests 库发送相应的 http 请求。
class RestClient: def do_request(self, url, method,**kwargs):return self.request(url, method, **kwargs) def request(self, url, method, **kwargs):if method GET:return requests.get(self.api_root_url url, **kwargs)if method POST:return requests.post(self.api_root_url url, **kwargs)if method PUT:return requests.put(self.api_root_url url, **kwargs)if method DELETE:return requests.delete(self.api_root_url url, **kwargs)
client_api RestClient()数据驱动测试和校验 通过 yaml 文件存放测试用例数据如下user_login_body 为用户登录数据列表其中url为api地址method 为请求方式data为请求参数 user_login_body:- url: /api/signinmethod: POSTdata: {username: userpassword: pwd}json转yaml格式的方法网上一堆比如 bejson而校验 yaml 书写格式的工具可以使用 YamlLint 通过装饰器 pytest.mark.parametrize运行测试时会获取测试用例的数据去执行测试 校验接口返回结果的正确性通常使用断言来实现。根据接口返回的数据结构可以使用适当的断言函数来校验各个字段的值是否符合预期。 Pytest 支持使用 assert 关键字进行断言assert 函数Pytest 提供了一些内置的断言函数 assertEqual(a, b)assertTrue(x)assertFalse(x)assertIs(a, b)assertIsNone(x)assertIn(a, b)assertNotIn(a, b)
报告生成展示
在命令行执行命令pytest 运行用例后会得到一个测试报告的原始文件但这个时候还不能打开成HTML的报告还需要在项目根目录下执行命令启动 allure 服务。下图是个结果测试结果的展示示例。
# 需要提前配置allure环境才可以直接使用命令行
allure serve ./reportallure测试报告框架是一个开源的测试报告生成工具它提供了丰富的功能和灵活的配置选项用于生成美观、可交互和易于理解的测试报告。基本过程如下 框架集成通过与 Pytest 集成 利用 Pytest 框架提供的插件机制将测试结果和相关信息收集起来。结果收集 allure 收集 Pytest 生成的测试结果数据结果数据中包括测试用例的执行状态、断言结果、日志信息等。报告生成 allure 使用收集到的数据转换为 xml 格式并利用报告模板和样式表定义渲染出漂亮的 html 文件。 持续集成 Jenkins中安装Allure插件 Allure Jenkins Plugin 添加接口自动化测试的代码 触发规则我选择的是准备发布打tag 后自动执行构建 cd ${WORKSPACE}pytest总结
本项目在实现过程中把整个项目拆分成请求方法封装、HTTP接口封装、关键字封装、测试用例等模块。
首先利用Python把HTTP接口封装成Python接口接着把这些Python接口组装成一个个的关键字再把关键字组装成测试用例而测试数据则通过YAML文件进行统一管理然后再通过Pytest测试执行器来运行这些脚本并结合Allure输出测试报告。
今天的分享就到此结束了大家还有什么不懂的可以评论区下提问哈如果我的文章对你有所帮助的话可以点赞三联支持一下哈