一、接口测试框架(5个目录文件,2个py文件)
- api:自己封装的接口
- data:存储的数据
- lib:第三方库
- report:测试报告
- script:测试脚本(测试类、测试方法)
- app.py:存放全局变量、公用变量
- run_suite.py:存放批量执行用例,生成测试报告的代码
- utils.py:存放工具函数、方法
二、总的封装步骤:
1、按普通方法实现http请求
2、将请求封装成自己的API(在api目录下)
3、在脚本中调用自己封装的API(在script目录下)
三、封装的思想
1、固定不变的,写入到属性和方法中。
2、动态变化的,设置到参数和返回值。
四、数据参数化步骤
1、导包。
from parameterized import parameterized
2、在通用测试方法中的上一行,添加@parameterized.expand()
3、给expand()传入[(),()...]的数据。(把[{},{}...]数据进行转化)
4、修改通用测试方法,添加形参
5、在通用测试方法内,使用形参
import unittest
import app
import utils
from api.ihrm_login_api import IhrmLoginApi
from utils import common_assert
from parameterized import parameterized
class TestIhrmLogin(unittest.TestCase):
@classmethod
def setUpClass(cls) -> None:
cls.api = IhrmLoginApi()
filename = app.BASE_DIR + "/data/login_data.json"
@parameterized.expand(utils.read_file(filename))
def test01_login(self,desc,req_data,stauts_code,success,code,message):
resp = self.api.login(req_data)
common_assert(resp,stauts_code,success,code,message)
封装函数,获取json文件
def read_file(filename):
with open(filename,'r',encoding="utf-8") as f:
jsonData = json.load(f) #从文件中读取
param_list = []
#遍历循环,取value值,转换成元组,追加到空列表中。[(),()...]
for i in jsonData:
param_list.append(tuple(i.values()))
return param_list
五、员工管理接口测试框架流程
1、封装(api)
- 修改登录获取令牌
- 封装员工crud接口
2、编写测试用例脚本(script)
- 登录获取令牌
- 添加员工获取ID
- 增删改查查员工列表
- 添加断言
3、参数化(登录接口参数化,data)
- 组织数据文件
- 读取数据文件
- 用parameterized实现参数化
4、导入第三方库(如HTMLTestRunner.py,lib)
5、存放全局变量、公共变量(app.py)
6、定义的通用方法(如定义通用断言方法、获取json文件的函数)
7、生成测试报告(run_suite.py、report)
#存放批量执行用例,生成测试报告的代码
import unittest
import app
from lib.HTMLTestRunner import HTMLTestRunner
#1、将HTMLTestRunner.py 模块文件,放到lib/目录下
#2、在run_suite.py中,导入模块
#3、创建 测试套件 实例
from script.test_ihrm_login import TestIhrmLogin
suite = unittest.TestSuite()
#4、组装 测试用例到 测试套件
suite.addTest(unittest.makeSuite(TestIhrmLogin))
#5、指定测试报告生成的路径以及名称
report_path = app.BASE_DIR +"/report"+"myReport.html"
#6、open()打开报告,以wb形式写入
with open(report_path,"wb") as f:
runner =HTMLTestRunner(f,title="人力资源系统报告",description="2023-2-20")
runner.run(suite)
六、Git和Gitee
持续集成:团队成员将自己的工作成果,持续集成到一个公共平台的过程。
相关工具:
- 本地代码管理:git
- 远程代码管理:gitee(国内)、github(国外)、gitlib(公司私有服务器)
- 持续集成:jenkins
1、git(本地代码管理)
git是一款在 本地 管理代码的工具。自带一个小型 仓库,存储本地代码。
git需要安装。
查看:cmd,输入git --version
2、gitee(远程代码管理)
git和gitee管理代码工作原理:
七、PyCharm与Gitee相关操作
PyCharm配置Gitee插件
1、将Gitee的项目Checkout到PyCharm中
使用场景:第一次加入某个项目,第一次从 gitee 获取代码时。
2、推送PyCharm新项目到Gitee远程仓库
应用场景:本地开发的项目,第一次上传到gitee中
3、将PyCharm代码push到Gitee远程仓库
使用场景:本地和gitee有相同的项目。本地代码做了新增,需要将新增的代码,推送gitee中。
第一步:添加到git缓存中:Add
第二步:添加到git中:Commit
第三步:推送到远程仓库:push
4、将Gitee仓库的新代码pull到PyCharm中
**应用场景:本地和gitee有相同的项目,gitee上代码做了新增,需要将新增的代码,拿到本地来。 **
5、解决冲突
应用场景:本地和gitee有相同项目,gitee上代码做了新增,本地对同一处代码,做了不同的新增。
结论:避免少出冲突:建议:先pull,再push。
八、Jenkins
简介:基于Java开发(必须按照jdk)的一种开源、跨平台的持续集成工具。
安装:
- 必须按照jdk,配置环境。
- 查验:java -version
启动:
- 在 jenkins.war 文件 所在 目录地址栏 输入 cmd 打开 终端。
- 输入命令 java -jar jenkins.war 启动服务。
- 启动成功后,终端窗口 不能关闭。最小化。
- 在浏览器地址栏 输入 localhost:8080
插件安装:
- Jenkins左侧菜单栏 —> “Manage Jenkins” —> 选择 “Manage Plugins” —> “可选插件” —> 插件名称,如:“HTML Publisher”
系统设置:
九、持续集成(Jenkins)-postman
准备工作:
- 打开已完成并测试无误的 postman 项目脚本。 再次执行测试。
- 导出(测试用例集、环境变量两个文件)“不支持中文” —— 全部改成英文!
- 文件所在目录地址栏输入cmd 打开终端。注意:用 “绝对路径” 测试。方便使用Jenkins。
- 执行无误,查看生成的测试报告文件
# extra版报告
newman run 测试用例集名.json -e 环境变量文件.json -d 数据文件.json -r htmlextra --reporter
htmlextra-export 报告名称.html
# 示例:
newman run "C:\Users\xwp\Desktop\postman_jenkins\iHRM.postman_collection.json" -e
"C:\Users\xwp\Desktop\postman_jenkins\iHRM_env.postman_environment.json" -r htmlextra --
reporter-htmlextra-export report.html
使用Jenkins管理——手动构建
打开 Jenkins 首页,点击 “新建Item” 创建一个新任务。
2、使用Jenkins管理——自动构建
- 选择“构建触发器” 标签。 选择 “Build periodically(定期地)”
- “日程表” 中写入:* * * * *(空格隔分) —> 分别对应 “分 时 日 月 年”
- 修改:10 16 * * * 就是 每天的 16 点 10 分 执行。
报告样式错乱 原因:
- Jenkins为了避免受到恶意攻击,设置了CSP安全策略。只允许加载 Jenkins服务器上托管的 CSS文件 和图片文件。
- 我们的用例、代码都是放在自己的服务器上,被恶意攻击的可能性极低。
解决报告样式错乱:
- 在启动时,添加参数 :
java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar Jenkins.war
十、持续集成(Jenkins)-代码
准备工作:将运行无误,能生成报告的 iHRM项目代码上传至 Gitee中。
使用Jenkins管理——手动构建
- 打开 Jenkins 首页, 点击 “新建Item” 创建一个新任务。
- “源码管理” 标签。
- “构建”标签
- “构建后操作”标签
- 再次点击“增加构建后操作步骤”
使用Jenkins管理——自动构建
在 “构建触发器” 标签。
-
选择 “Build periodically(定期地)” 添加 定时构建!
-
“日程表” 中写入:* * * * *(空格隔分) —> 分别对应 “分 时 日 月 年”。修改:10 16 * * * 就是 每天的 16 点 10 分 执行。
-
也可以在 “构建触发器” 标签 中选择 “Poll SCM”。 写入 :*/1 * * * * (空格隔分)。代表1分钟 检查一次 gitee 上的代码,查验是否有更新。