分享一下做过的接口测试的项目知识,简单的整理了下,以后有时间会把其他的也整理下,大家有好的建议或者疑问的可以直接回复哦。
里面的设计和具体的实现都存在不同程度的缺陷。以下都是实现完成并运用于项目中的。
Python Web Restful API 接口测试项目知识整理归纳
项目工具选择
使用工具: Robot Framework + Jenkins + Gitlab + Jira
Robot Framework: 关键字驱动自动化测试框架
Python Unit Test: Python 内置的单元测试框架
Gitlab : 版本控制软件
Jenkins: 持续集成软件
Jira: 缺陷管理工具,储存测试用例和 bug
自动化测试的工作流水线:
1.使用 Robot Framework + Requests
Jenkins run job -> Sync latest code from Git lab-> Run automation(Robot Framework) -> Update case status in Jira(Use Jira rest API) -> show report on Jenkins
Details:
(1) Jenkins 配置:
新建 Job , 绑定 Gitlab 项目地址,设置运行模式并选择 run .sh 文件, 如果是用 robot, .sh 文件 export 环境变量后,pybot suite1 suite2.....
(2) Gitlab: 新建项目,本地安装 Git Client
(3) Jira 相关配置:
需要确认项目的 ProjectId 和 Test Cycle, Test Cycle 可以由 API 自动创建
自动化工程工程中对 Jira 的相关操作,必要的参数需要从 Jira rest api 中获取
(4) Robot Framework 搭建自动化测试工程
测试用例管理: Feature
-Test Suite
-Test Case
封装自定义关键字:Module 名字必须和 Class 相同, 关键字作为每一个方法存在,确认方法所需的返回值和输入的参数。
配置并使用自定义的 Library,再 global.txt 中添加新增的 Library 地址。
与 Jira 整合: 编写更新测试用例状态的 keyword,在每个 case 中的 tear down 中使用,执行每条 case 更新结果。
与 Jenkins 整合: Jenkins 需要安装 robot 插件并配置在 “增加构建后步骤” 选择 “Publish Robot Framework test results”
2.使用 Python Unit Test + HTMLTestRunnner
1-3 与上述几乎相同
Python Unit Test 搭建自动化测试框架工程
测试用例管理
Feature ----- Package
-Test Suite ----- Module
-Test Case List ----- Class
-Test Case ----- Method
参数模块
使用 Json 定义参数数据模板或使用 excel 存贮参数,选择不同实现方式不同
{
"display_name": {
"method": "randomString",
"arguments": {
"supported_string_list": [
"letters",
"digits",
"punctuation"
],
"min_length": "4",
"max_length": "30"}
},
"email": {
"method": "randomEmail",
"arguments": {
}
"password": {
"method": "randomString",
"arguments": {
"supported_string_list": [
"letters",
"digits",
"punctuation"
],
"min_length": "6",
"max_length": "30"}
},
"permissions": [],
"roles": {
"method": "randomParamsList",
"arguments": {
"parameters_list": "roles",
"accept_empty": "True"}
}
}
Case Suite 和 Jira 中 case 关联方式, 实现方式有很多种,以下列举几个示例:
1.Unit 中 method name 和 Jira case 关联 testOS666DemoCase1
2.建立 case 和 method 映射关系 {“OS-666”:” testMethodName”}
运行方式:
根据不同需求筛选 case 组成 case suite,用 HTMLTestRunner.HTMLTestRunner 运行测试用例套件。