一.在整个框架中需要用到哪些东西?

1.python环境安装

https://www.python.org/downloads/windows/

下载解压后直接安装,选择 Add python to path

2.JAVA环境配置

安装包下载地址:https://www.oracle.com/java/technologies/downloads/

环境变量设置参数如下:

● 变量名:JAVA_HOME

● 变量值:C:\Program Files\Java\jdk-22 java环境的安装路径

● 变量名:CLASSPATH

● 变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

● 变量名:Path

● 变量值:%JAVA_HOME%\bin %JAVA_HOME%\jre\bin

3.requests库

requests是一个python的HTTP库,用于发送HTTP请求,支持HTTP认证、会话、上传文件、json处理等功能。

  • 安装:pip install requests

  • 1.发送get请求

    如果get方法有参数,使用params传递参数,拼接到url中

             import requests
    response=requests.get("https://www.baidu.com")
    data={"key":"value"}
    response=requests.get("https://xxxx.com",params=data)
  • 2.发送post请求

    A.默认普通表单形式传参(x-www-form-urlencoded),放在data中

             import requests
    url="https://www.baidu.com"
    data={"username":"test001","password":"AAAAAA"}
    response=requests.post(url=url,data=data)

    B1. 数据格式以json格式传参,原则上是要放在json参数中,也可以放在data中,需要注意设置请求头的参数格式为application/json,以及要将参数转换为json格式

        import requests
    url="https://www.baidu.com"
    data={"username":"test001","password":"AAAAAA"}
    headers={"Content-Type":"application/json;charset=utf-8"}
    json_data=json.dumps(data)
    response=requests.post(url=url,headers=headers,data=json_data)

    B2.以json格式传参,直接放在json参数中

        import requests
    url="https://www.baidu.com"
    data={"username":"test001","password":"AAAAAA"}
    response=requests.post(url=url,headers=headers,json=data)
  • 会话使用

    requests中有一个requests.Session()创建一个回话对象,使用创建的session对象发起请求,可以跨请求时保留状态,和cookies同理

      session=requests.Session()
    session.post("http://xxxx.com",data=data)
  • 错误处理

        try:
    response=requests.post("http://xxx.com",data=data)
    except requests.exceptions.RequestException as e:
    print(e)
  • 响应内容处理

              `import requests`
    `response=requests.get("https://www.baidu.com")`
    `response_data=response.json()`
    `text=response.text`
  • 上传文件

              `import resuqets`
    `url="https://www.baidu.com"`
    `files={"file":open("example.txt","rb")}`
    `response=requests.post(url=url,file=files)`

4.pytest框架

pytest是一个第三方库,用于执行python测试的框架,它收集已经用python代码编写好的用例进行执行,断言、参数化、筛选用例,测试夹具,结合allure生成HTML报告、用例失败重跑、日志记录,持续集成、动态生成测试标题等。

安装 pip install pytest

1.参数化 @pytest.mark.parametrize("变量名","引用的变量的值")



将data中的每一行数据都通过参数化依次读取出来,在用例中使用

2.测试夹具 @pytest.fixture()

定义夹具:

使用夹具:在测试用例中引用这个夹具

`def test_01(login_fixture):`
` pass `

3.用例失败重跑机制,rerun表示重跑次数,reruns_delay是延迟时间,每次用例执行失败3s秒后再次重跑

  `@pytest.mark.flaky(reruns=3, reruns_delay=3)`

5.pycharm安装

6.Allure安装配置

allure安装:https://github.com/allure-framework/allure2/releases

下载解压,将路径添加到环境变量中,例:D:\install\allure-2.27.0\allure-2.27.0\bin

在cmd中输入allure --version ,出现版本号既安装成功

pip install allure-pytest

1.用例添加标题:

给函数添加标题:

  `@allure.title()`

2.用例添加步骤: @allure.step()

    `with allure.step("第一步:xxxx"):`
缩进代码
`with allure.step("第二步:xxxx")`
缩进代码

3.添加附件到Allure报告

        `@allure.step("查看用户列表")`
`def view_userlist():`
`response=requests.get("http://xxxx.com")`
`allure.attach(response.text,name="Userlist",attachment_type=allure.attachmentType.TEXT)`

4.为用例动态生成测试标题:固定写法,用例都放到excel文件,读取后将用例标题、模块等信息显示到用例执行信息中

二.框架需要安装的依赖包

https://www.cnblogs.com/tyl-bok/p/18194298

三.项目目录结构

四.方法封装

api_keyword关键字包

1.封装requests的请求方法

导入requests库(import requests),使用requests自身的get和post方法进行二次封装,放在关键字参数api_keyword.py的ApiKeys类中

2.封装从响应结果中提取数据的方法

从响应中提取数据需要使用json path进行提取,导入jsonpath(import json/import jsonpath)

  • jsonpath用来提取数据,jsonpath.jsonpath(参数1:响应数据response,参数2:需要提取的数据(json path表达式)),返回的数据类型是列表

  • json 用来转换数据格式(如果响应数据是字典格式的字符串,要转换为json格式),json.loads(响应数据)

注:这个方法提取到的数据是一个列表,且一次只能提取一个数据

3.封装从数据库提取数据的方法

1.连接数据库--------------->2.执行sql语句,获取结果(元组格式)

Common公共包

4.封装Excel文件方法(安装pip install openpyxl)

自动化测试用例相关信息都是放在Excel文件中,包括用例名称、用例标题、请求方法、请求参数、预期结果、实际结果、校验字段等,所以需要将Excel文件的数据读取出来进行测试

读取Excel文件,导入import openpyxl,封装读取和写入Excel文件的方法,放在common包的FileExcelRead.py中,类名为FileExcelRead

5.封装yaml文件方法(安装 pip install pyyaml)

读取yaml文件,导入import yaml,封装读取和写入yaml文件的方法,放在common包的FileYamlRead.py中,类名为FileYamlRead

6.封装接口加密方法AES(对称加密)

部分接口是加密接口,如果不对数据进行加密,就会报错,放在common包的Data_Encrypt_AES.py中,类名为Data_Encrypt

补位函数为什么要将需要加密的数据补位到16位,参考https://www.cnblogs.com/tyl-bok/p/18189589

data数据包

1.excel-----存放exce格式的数据

2.yaml-----存放yaml格式的数据

testcase用例包

存放项目的测试用例,在项目中, 一般是一个模块的测试用例放在一个目录下

config.py文件

常量配置文件,例如项目的url,数据库信息、账号密码等,这些一般在项目中不会变动,需要用的时候,直接引用这个变量即可

conftest.py文件

1.可以在项目中添加测试夹具,例如项目需要登录,不用每个测试用例前面都写登录操作,只用定义一个用于登录的夹具,在测试用例中直接引用这个夹具即可

2.项目要生成日志信息,需要使用钩子函数,结合pytest.ini文件实现日志生成

pytest.ini文件

主要用来对日志进行设置,打开日志开关,设置日志的表示格式,这个文件里面不能出现中文

run_main文件

pytest框架的用例执行入口,只要满足pytest的命名规则:

1.py文件必须以test_开头或者_test结尾

2.用例名称必须以test_开头

3.如果用例是放在类里面,类名必须以Test开头

在运行时,pytest会收集所有符合条件的用例进行执行

五.Git安装配置

详见https://www.cnblogs.com/tyl-bok/p/18150798

六.jenkins安装配置

代码存放在git仓库后,需要借助Jenkins工具固定一个时间跑用例

Jenkins是一个持续集成和交付的工具------>是一个长期将项目中的工作合并到流水线并且持续部署上线的工具(CICD)

1.下载地址:https://www.jenkins.io/download/#downloading-jenkins

2.下载完成,在jenkins的下载目录中输入cmd进入终端,输入java -jar jenkins.war启动服务(cmd命令行关闭即服务停止)

3.启动服务,浏览器访问http://127.0.0.1:8080,进入jenkins

4.jenkins默认登录账号admin,初始密码:cmd命令输入start . ,找到.jenkins文件夹--->secrets--->initialAdminPassword文件

1.jenkins拉取Git代码

进入jenkins,点击【新建item】,选择【Freestyle project】创建一个自由格式的项目,点击确定进入项目的配置页面

通过【源码管理】拉取Git仓库项目

1.配置Github项目地址



2.添加凭证信息

3.构建分支选择

jenkins在拉取Git项目时,默认的分支是master,如果自己github项目的分支是main,需要切换成main,不然会报错

4.配置完成后,对项目进行构建

5.运行成功后,进入项目,工作空间已存在git项目代码

2.jenkins实现定时构建项目

构建触发器

在【源码管理】--->【构建触发器】---->【Build periodically】

日程表填写语法: MINUTE HOUR DOM MONTH DOW 分 时 天 月 周

常用的:

H/15 * * * * 每隔15分钟运行一次

H 2 * * * 每天凌晨2点运行

H 8-17/2 * * * 每天8点-17点,2小时运行一次

H 8-17/2 * * 1-5 周一到周五,每天8点-17点,2小时运行一次

2.jenkins实现当别的构建完成再构建项目

接口自动化测试框架【python+requests+pytest+excel/yaml+allure+jenkins】的更多相关文章

  1. pytest+requests+Python3.7+yaml+Allure+Jenkins+docker实现接口自动化测试

    接口自动化测试框架(用例自动生成) 项目说明 本框架是一套基于pytest+requests+Python3.7+yaml+Allure+Jenkins+docker而设计的数据驱动接口自动化测试框架 ...

  2. 接口自动化-python+requests+pytest+csv+yaml

    本套代码和逻辑 是本人的劳动成果,如果有转载需要标注, 非常适合公司做项目的同学!!!小白也可以学哦! 1.项目目录  2.公共方法的封装 2.1如果不用配置文件 可以使用这个方法进行封装--但是有一 ...

  3. Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

    一.Python+unittest+requests+HTMLTestRunner 完整的接口自动化测试框架搭建_00--框架结构简解 首先配置好开发环境,下载安装Python并下载安装pycharm ...

  4. python+requests接口自动化测试框架实例详解

    python+requests接口自动化测试框架实例详解   转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实 ...

  5. 基于Python+Requests+Pytest+YAML+Allure实现接口自动化

    本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...

  6. 【接口自动化】Python+Requests接口自动化测试框架搭建【一】

    公司项目启用新框架,前后端分离,所以接口测试成为测试工作中不可缺失的一个环节,现在将从0开始搭建接口自动化测试框架的路程,一步步记录下来. 开发语言我们采用Python+第三方库Requests,测试 ...

  7. python版接口自动化测试框架源码完整版(requests + unittest)

    python版接口自动化测试框架:https://gitee.com/UncleYong/my_rf [框架目录结构介绍] bin: 可执行文件,程序入口 conf: 配置文件 core: 核心文件 ...

  8. 【转】robot framework + python实现http接口自动化测试框架

    前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了 ...

  9. 【python3+request】python3+requests接口自动化测试框架实例详解教程

    转自:https://my.oschina.net/u/3041656/blog/820023 [python3+request]python3+requests接口自动化测试框架实例详解教程 前段时 ...

  10. robot framework + python实现http接口自动化测试框架

    https://www.jianshu.com/p/6d1e8cb90e7d 前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测 ...

随机推荐

  1. navicat远程连接报错

    mysql,2003 can't connect to mysql server on 10038 我们连接远程服务器的mysql,如果出现问题,很大问题会出在服务器的端口和授权问题 # 首先我们通过 ...

  2. Win11减少C盘占用及清爽系统配置教程

    Win11减少C盘占用及清爽系统配置教程 你是否有过C盘爆满而不得不重装系统的经历?你是否有过因为C盘爆满而不得不不断的拓展空间的无奈?你是否有过已经将软件安装在D盘但C盘的空间还是在日益变满的痛苦? ...

  3. Win11如何找回熟悉的开始菜单、任务栏和右键菜单

    背景 公司政策满3年可以换新电脑,前段时间申请了下,到手后发现是Win11系统,配置翻倍,欣然接受,把一些常用的软件都安装上,但是,用了一段时间后,发现右键刷新要点击2次,开始菜单找东西也完全靠搜索, ...

  4. JVM学习笔记之类装载器-ClassLoader

    JVM学习笔记之类装载器-ClassLoader 本文字数:2300,阅读耗时7分钟 JVM体系结构概览 类装载器ClassLoader: 负责加载class文件,class文件在文件开头有特定的文件 ...

  5. 海光 FTPM 运行报错:Fapi_Provision_Finish() ErrorCode (0x00060025) No EK certificate found.

    使用的是海光 CPU 提供的基于固件的 FTPM,错误原因是海光没有给 TPM 提供相应的 EK 证书.从而导致Fapi_Provision()接口无法通过证书的校验.关于Fapi_Provision ...

  6. TypeScript 高级教程 – TypeScript 类型体操 (第三篇)

    前言 在 第一部 – 把 TypeScript 当强类型语言使用 和 第二部 – 把 TypeScript 当编程语言使用 后, 我们几乎已经把 TypeScript 的招数学完了. 第三部就要开始做 ...

  7. ASP.NET Core – Partial View

    前言 之前写过一篇 ASP.NET Core – View Component 里面有提到, View Component 是 Partial View 的加强版. 多了一个 .cs 可以写逻辑. 那 ...

  8. 记录JDK8到JDK17各个版本的更新重点

    虽然大多数公司还是用的JDK8但是也要去了解和学习一下新得东西 ## JDK8新特性(2014年初)(LTS版本) 1.Lambda表达式 2.函数式编程 3.接口可以添加默认方法和静态方法,也就是定 ...

  9. C++的并发编程历史

    多线程环境 并非所有的语言都提供了多线程的环境.即便是C++语言,直到C++11标准之前,也是没有多线程支持的. 在这种情况下,Linux/Unix平台下的开发者通常会使用POSIX Threads, ...

  10. 开源的键鼠共享工具「GitHub 热点速览」

    十一长假回来,我的手放在落灰的键盘上都有些陌生了,红轴竟敲出了青轴般的响声,仿佛在诉说对假期结束的不甘. 假期回归的首更,让我们看看又有什么好玩的开源项目冲上了开源热榜.一套键盘和鼠标控制多台电脑的工 ...