新增和修改部分测试用例

This commit is contained in:
floraachy
2024-04-17 16:14:45 +08:00
parent fd9e5b8df1
commit 795b290e66
32 changed files with 971 additions and 401 deletions
+11 -10
View File
@@ -20,6 +20,7 @@ ENV_VARS = {
"host": "https://******",
"wiki_host": "https://******",
"pms_host": "https://******",
"glcc_host": "https://******",
# 获取oauth_token需要的参数
"client_id": "****client_id****",
"client_secret": "****client_secret****",
@@ -44,7 +45,7 @@ ENV_VARS = {
"env_project_id": "",
# pms相关环境变量 - 产品
"env_pms_product_id": "",
"env_pms_product_identifier": "******",
"env_pms_product_identifier": "",
# pms相关环境变量 - 项目
"env_pms_project_id": "",
# pms相关环境变量 - 企业
@@ -94,8 +95,8 @@ ENV_VARS = {
"t_nickname": "******",
"t_user_id": 36670,
# 测试仓库 env_repo_owner/env_repo_identifier
"env_repo_owner": "****",
"env_repo_identifier": "****",
"env_repo_owner": "******",
"env_repo_identifier": "******",
"env_project_id": "****",
# pms相关环境变量 - 产品
"env_pms_product_id": "",
@@ -150,7 +151,7 @@ ENV_VARS = {
# 测试仓库 env_repo_owner/env_repo_identifier
"env_repo_owner": "******",
"env_repo_identifier": "******",
"env_project_id": "",
"env_project_id": "******",
# pms相关环境变量
"env_pms_product_id": "",
"env_pms_product_identifier": "",
@@ -193,13 +194,13 @@ ENV_VARS = {
"t_nickname": "******",
"t_user_id": 87691,
# 测试账号 - 超级管理员 (测试仓库管理员)
"env_super_login": "******",
"env_super_password": "******",
"env_super_user_id": 88473,
"env_super_login": "",
"env_super_password": "",
"env_super_user_id": 0,
# 测试仓库 env_repo_owner/env_repo_identifier
"env_repo_owner": "******",
"env_repo_identifier": "******",
"env_project_id": "******",
"env_repo_owner": "",
"env_repo_identifier": "",
"env_project_id": "",
# pms相关环境变量
"env_pms_product_id": "",
"env_pms_product_identifier": "",
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 218 KiB

@@ -9,27 +9,32 @@ case_common:
case_info:
-
id: gitlink_repo_set_default_branch_001
title: 更新项目默认分支
id: gitlink_repo_update_default_branch_001
title: 更新项目默认分支,更新成功
severity: critical
run: True
url: /api/${env_repo_owner}/${env_repo_identifier}.json
method: PUT
url: /api/v1//${env_repo_owner}/${env_repo_identifier}/branches/update_default_branch.json
method: PATCH
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
default_branch: master
name: master
files:
assert_response:
status_code: 200
assertProjectId:
message: 断言identifier
assert_status:
message: 断言接口status=0
expect_value: 0
assert_type: ==
expect_value: ${env_repo_identifier}
type_jsonpath: $.identifier
type_jsonpath: $.status
assert_message:
message: 断言接口message=success
expect_value: success
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
@@ -0,0 +1,47 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 分支设置
case_markers:
- gitlink
- gitea
- branch
- usefixtures: gitlink_login
# 前提条件:仅仓库管理员及以上角色才有权限
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_get_repo_protect_branch_list_01
title: 仓库管理员获取仓库保护分支列表,获取成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/protected_branches.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
page: 1
limit: 15
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段total_count
expect_value: total_count
assert_type: contains
assert_sql:
extract:
case_dependence:
@@ -0,0 +1,71 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 分支设置
case_markers:
- gitlink
- projects
- gitea
- branch
- usefixtures: gitlink_login
# 前提条件:仅仓库管理员及以上角色才有权限
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_repo_delete_protect_branch_01
title: 仓库管理员删除保护分支,设置成功
severity: critical
run: True
url: /api/${repo_owner}/${repo_identifier}/protected_branches/master.json
method: DELETE
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
branch_name: master
branchProtect: false # 启用分支保护
enable_push: 0 # 禁用推送
enable_push_whitelist: false # 启用推送白名单
enable_merge_whitelist: false # 启用合并白名单
merge_whitelist_usernames: # 启用合并白名单 用户
enable_status_check: false # 启用状态检查
required_approvals: 5 # 所需批准数
enable_approvals_whitelist: false # 批准仅限列入白名单的用户或团队
approvals_whitelist_usernames: # 批准仅限列入白名单的用户或团队
block_on_rejected_reviews: false # 拒绝审核阻止了合并
dismiss_stale_approvals: false # 取消过时的批准
require_signed_commits: false # 需要签名提交
block_on_outdated_branch: false # 如果拉取请求已经过时,阻止合并
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=0
expect_value: 0
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=success
expect_value: success
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
setup:
interface:
# 设置保护分支 master
- gitlink_set_repo_protect_branch_01
@@ -0,0 +1,66 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 分支设置
case_markers:
- gitlink
- projects
- gitea
- branch
- usefixtures: gitlink_login
# 前提条件:仅仓库管理员及以上角色才有权限
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_repo_edit_protect_branch_01
title: 仓库管理员更新保护分支,设置成功
severity: critical
run: True
url: /api/${repo_owner}/${repo_identifier}/protected_branches/master.json
method: PATCH
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
branch_name: master
branchProtect: true # 启用分支保护
enable_push: 0 # 禁用推送
enable_push_whitelist: false # 启用推送白名单
enable_merge_whitelist: false # 启用合并白名单
merge_whitelist_usernames: # 启用合并白名单 用户
enable_status_check: false # 启用状态检查
required_approvals: 5 # 所需批准数
enable_approvals_whitelist: false # 批准仅限列入白名单的用户或团队
approvals_whitelist_usernames: # 批准仅限列入白名单的用户或团队
block_on_rejected_reviews: false # 拒绝审核阻止了合并
dismiss_stale_approvals: false # 取消过时的批准
require_signed_commits: false # 需要签名提交
block_on_outdated_branch: false # 如果拉取请求已经过时,阻止合并
files:
assert_response:
status_code: 200
assertField:
message: 断言接口返回的branch_name
expect_value: master
assert_type: ==
type_jsonpath: $.branch_name
assert_sql:
extract:
case_dependence:
setup:
interface:
# 设置保护分支 master
- gitlink_set_repo_protect_branch_01
@@ -0,0 +1,49 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 分支设置
case_markers:
- gitlink
- projects
- gitea
- branch
- usefixtures: gitlink_login
# 前提条件:仅仓库管理员及以上角色才有权限
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_repo_set_default_branch_01
title: 仓库管理员设置默认分支,设置成功
severity: critical
run: True
url: /api/${repo_owner}/${repo_identifier}.json
method: PUT
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
default_branch: master
files:
assert_response:
status_code: 200
assertField:
message: 断言接口返回的repo_identifier
expect_value: ${repo_identifier}
assert_type: ==
type_jsonpath: $.identifier
assert_sql:
extract:
case_dependence:
@@ -0,0 +1,60 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 分支设置
case_markers:
- gitlink
- gitea
- branch
- usefixtures: gitlink_login
# 前提条件:仅仓库管理员及以上角色才有权限
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_set_repo_protect_branch_01
title: 仓库管理员设置仓库保护分支,设置成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/protected_branches.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
branch_name: master
branchProtect: true # 启用分支保护
enable_push: 0 # 禁用推送
enable_push_whitelist: false # 启用推送白名单
enable_merge_whitelist: true # 启用合并白名单
merge_whitelist_usernames: # 启用合并白名单 用户
enable_status_check: true # 启用状态检查
required_approvals: 5 # 所需批准数
enable_approvals_whitelist: true # 批准仅限列入白名单的用户或团队
approvals_whitelist_usernames: # 批准仅限列入白名单的用户或团队
block_on_rejected_reviews: true # 拒绝审核阻止了合并
dismiss_stale_approvals: true # 取消过时的批准
require_signed_commits: true # 需要签名提交
block_on_outdated_branch: true # 如果拉取请求已经过时,阻止合并
files:
assert_response:
status_code: 200
assertField:
message: 断言接口返回的branch_name
expect_value: master
assert_type: ==
type_jsonpath: $.branch_name
assert_sql:
extract:
case_dependence:
@@ -0,0 +1,46 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 仓库设置
case_markers:
- gitlink
- gitea
- debug
- usefixtures: gitlink_login
# 仅仓库管理员及以上角色才有权限
common_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
teardown:
# 删除仓库
interface: gitlink_projects_delete_project_01
case_info:
- id: gitlink_cancel_transfer_repo_01
title: 仓库取消转移,取消成功
severity: critical
run: True
url: /api/${repo_owner}/${repo_identifier}/applied_transfer_projects/cancel.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
files:
assert_response:
status_code: 200
assertField:
message: 断言接口返回包括字段
expect_value: project
assert_type: contains
assert_sql:
extract:
case_dependence:
setup:
interface:
# 仓库申请转移
- gitlink_transfer_repo_01
@@ -0,0 +1,45 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: 仓库设置
case_markers:
- gitlink
- gitea
- debug
- usefixtures: gitlink_login
# 仅仓库管理员及以上角色才有权限
common_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
teardown:
# 删除仓库
interface: gitlink_projects_delete_project_01
case_info:
- id: gitlink_transfer_repo_01
title: 仓库申请转移,申请成功
severity: critical
run: True
url: /api/${repo_owner}/${repo_identifier}/applied_transfer_projects.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
# goal: 0
owner_name: ${env_super_login} # 迁移对象标识
identifier: ${repo_identifier}
files:
assert_response:
status_code: 200
assertField:
message: 断言接口返回包括字段
expect_value: project
assert_type: contains
assert_sql:
extract:
case_dependence:
@@ -34,7 +34,7 @@ case_info:
request_type: json
payload:
user_id: ${user_id}
name: test_${generate_identifier()}_${generate_identifier()}
name: test_${generate_catch_phrase()}
repository_name: ${generate_identifier()}_test
files:
assert_response:
@@ -68,7 +68,7 @@ case_info:
request_type: json
payload:
user_id: ${user_id}
name: test_${generate_identifier()}_${generate_identifier()}
name: 测试_${generate_catch_phrase()}
repository_name: ${generate_identifier()}_test
private: true
files:
@@ -103,7 +103,7 @@ case_info:
request_type: json
payload:
user_id: ${user_id}
name: test_${generate_identifier()}_${generate_identifier()}
name: test_${generate_catch_phrase()}
repository_name: ${generate_identifier()}_test
description: ${generate_paragraph()}
private: true
@@ -154,7 +154,7 @@ case_info:
request_type: json
payload:
user_id: ${user_id}
name: test_${generate_identifier()}_${generate_identifier()}
name: test_${generate_catch_phrase()}
repository_name: ${generate_identifier()}_test
files:
assert_response:
@@ -7,83 +7,176 @@ case_common:
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_get_repo_add_webhook_01
title: 仓库管理员创建Webhook,创建成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: # 填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: # 必填,是否开启, 布尔值
content_type: # 必填,内容类型, 枚举值:json form
http_method: # 填,请求方式,枚举值:GET POST
secret: # 填,密钥
url: # 必填,请求地址
branch_filter: # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
files:
assert_response:
- id: gitlink_get_repo_add_webhook_01
title: 仓库管理员创建Webhook(push事件),创建成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: gitea # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: true # 填,是否开启, 布尔值
content_type: json # 必填,内容类型, 枚举值:json form
http_method: ${random.choice(['GET', 'POST'])} # 必填,请求方式,枚举值:GET POST
secret: ${generate_identifier} # 填,密钥
url: ${faker.uri()} # 填,请求地址
branch_filter: '*' # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
eventCondition: push
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
- push
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段total_count
expect_value: total_count
message: 断言接口返回包括字段id
expect_value: id
assert_type: contains
assert_sql:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
assert_sql:
extract:
case_dependence:
-
id: gitlink_get_repo_add_webhook_02
title: 仓库管理员创建Webhook,创建成功
severity: normal
run: True
url: /api/${env_repo_owner}/${env_repo_identifier}/webhooks.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: # 必填,是否开启, 布尔值
content_type: # 必填,内容类型, 枚举值:json form
http_method: # 必填,请求方式,枚举值:GET POST
secret: # 选填,密钥
url: # 必填,请求地址
branch_filter: # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
files:
assert_response:
- id: gitlink_get_repo_add_webhook_02
title: 仓库管理员创建Webhook(所有事件),创建成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: gitea # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: true # 必填,是否开启, 布尔值
content_type: json # 必填,内容类型, 枚举值:json form
http_method: ${random.choice(['GET', 'POST'])} # 必填,请求方式,枚举值:GET POST
secret: ${generate_identifier} # 选填,密钥
url: ${faker.uri()} # 必填,请求地址
branch_filter: '*' # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
eventCondition: all
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
- create
- delete
- push
- pull_request_assign
- pull_request_review
- pull_request_only
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段id
expect_value: id
assert_type: contains
assert_sql:
extract:
type_jsonpath:
repo_webhook_id: $.id
case_dependence:
- id: gitlink_get_repo_add_webhook_03
title: 仓库管理员创建Webhook(所有自定义事件),创建成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: gitea # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: true # 必填,是否开启, 布尔值
content_type: json # 必填,内容类型, 枚举值:json form
http_method: ${random.choice(['GET', 'POST'])} # 必填,请求方式,枚举值:GET POST
secret: ${generate_identifier} # 选填,密钥
url: ${faker.uri()} # 必填,请求地址
branch_filter: '*' # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
eventCondition: forevent
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
- create
- delete
- push
- pull_request_assign
- pull_request_comment
- pull_request_only
- issues_only
- issue_label
- issue_assign
- issue_comment
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段id
expect_value: id
assert_type: contains
assert_sql:
extract:
type_jsonpath:
repo_webhook_id: $.id
case_dependence:
- id: gitlink_get_repo_add_webhook_04
title: 非仓库管理员创建Webhook(所有自定义事件),创建成功
severity: normal
run: false
url: /api/${env_repo_owner}/${env_repo_identifier}/webhooks.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: gitea # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: true # 必填,是否开启, 布尔值
content_type: json # 必填,内容类型, 枚举值:json form
http_method: ${random.choice(['GET', 'POST'])} # 必填,请求方式,枚举值:GET POST
secret: ${generate_identifier} # 选填,密钥
url: ${faker.uri()} # 必填,请求地址
branch_filter: '*' # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
eventCondition: push
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
- push
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
message: 断言接口status=404
expect_value: 404
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
message: 断言接口message
expect_value: 您访问的页面不存在或已被删除
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
assert_sql:
extract:
type_jsonpath:
repo_webhook_id: $.id
case_dependence:
@@ -7,9 +7,17 @@ case_common:
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
# 前提条件:仅仓库管理员及以上角色才有权限,当前仓库存在webhook
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
@@ -17,7 +25,7 @@ case_info:
title: 仓库管理员删除Webhook,删除成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${webhook_id}.json
url: /api/${repo_owner}/${repo_identifier}/webhooks/${repo_webhook_id}.json
method: DELETE
headers:
Content-Type: application/json; charset=utf-8;
@@ -25,55 +33,23 @@ case_info:
cookies:
request_type: params
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段total_count
expect_value: total_count
assert_type: contains
assert_sql:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
-
id: gitlink_get_repo_delete_webhook_02
title: 非仓库管理员删除Webhook,删除失败
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${webhook_id}.json
method: DELETE
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
message: 断言接口status=0
expect_value: 0
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
message: 断言接口message=success
expect_value: success
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
setup:
interface:
# 新建webhook
- gitlink_get_repo_add_webhook_03
@@ -1,88 +0,0 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: Webhook
case_markers:
- gitlink
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
case_info:
-
id: gitlink_get_repo_update_webhook_01
title: 仓库管理员更新Webhook,更新成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${webhook_id}.json
method: PUT
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: # 必填,是否开启, 布尔值
content_type: # 必填,内容类型, 枚举值:json form
http_method: # 必填,请求方式,枚举值:GET POST
secret: # 选填,密钥
url: # 必填,请求地址
branch_filter: # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段total_count
expect_value: total_count
assert_type: contains
assert_sql:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
-
id: gitlink_get_repo_update_webhook_02
title: 非仓库管理员更新Webhook,更新失败
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${webhook_id}.json
method: PUT
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: # 必填,是否开启, 布尔值
content_type: # 必填,内容类型, 枚举值:json form
http_method: # 必填,请求方式,枚举值:GET POST
secret: # 选填,密钥
url: # 必填,请求地址
branch_filter: # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
events: # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
@@ -0,0 +1,67 @@
case_common:
allure_epic: GitLink接口
allure_feature: 开源项目模块
allure_story: Webhook
case_markers:
- gitlink
- gitea
- webhook
- usefixtures: gitlink_login
# 前提条件:仅仓库管理员及以上角色才有权限,当前仓库存在webhook
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
id: gitlink_get_repo_update_webhook_01
title: 仓库管理员更新Webhook,更新成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${repo_webhook_id}.json
method: PATCH
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
type: gitea # 选填,类型, 默认值gitea 枚举值:gitea slack discord dingtalk telegram msteams feishu matrix jianmu softbot
active: true # 必填,是否开启, 布尔值
content_type: json # 必填,内容类型, 枚举值:json form
http_method: ${random.choice(['GET', 'POST'])} # 必填,请求方式,枚举值:GET POST
secret: ${generate_identifier} # 选填,密钥
url: ${faker.uri()} # 必填,请求地址
branch_filter: '*' # 必填,分支白名单 推送、创建,删除分支事件的分支白名单,使用 glob 模式匹配指定。若为空或 ,则将报告所有分支的事件。
events: push # 必填,事件,枚举值:push create delete issues_only issue_assign issue_label issue_comment pull_request_only pull_request_assign pull_request_comment
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=0
expect_value: 0
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=success
expect_value: success
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
setup:
interface:
# 新建webhook
- gitlink_get_repo_add_webhook_03
teardown:
interface:
# 删除webhook
- gitlink_get_repo_delete_webhook_01
@@ -7,8 +7,17 @@ case_common:
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
# 前提条件:仅仓库管理员及以上角色才有权限,当前仓库存在webhook
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
@@ -16,7 +25,7 @@ case_info:
title: 仓库管理员获取Webhook详情,获取成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${webhook_id}.json
url: /api/${repo_owner}/${repo_identifier}/webhooks/${repo_webhook_id}/edit.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
@@ -24,55 +33,21 @@ case_info:
cookies:
request_type: params
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段total_count
expect_value: total_count
message: 断言接口返回包括字段id
expect_value: id
assert_type: contains
assert_sql:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
-
id: gitlink_get_repo_webhook_detail_02
title: 非仓库管理员获取Webhook详情,获取失败
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${webhook_id}.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
interface:
# 新建webhook
- gitlink_get_repo_add_webhook_03
teardown:
interface:
# 删除webhook
- gitlink_get_repo_delete_webhook_01
@@ -7,8 +7,17 @@ case_common:
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
# 前提条件:仅仓库管理员及以上角色才有权限,当前仓库存在webhook
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
@@ -16,7 +25,7 @@ case_info:
title: 仓库管理员获取Webhook历史推送列表,获取成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${id}/hooktasks.json.json
url: /api/${repo_owner}/${repo_identifier}/webhooks/${repo_webhook_id}/tasks.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
@@ -24,9 +33,8 @@ case_info:
cookies:
request_type: params
payload:
owner:
repo:
id:
page: 1
limit: 10
files:
assert_response:
status_code: 200
@@ -38,41 +46,12 @@ case_info:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
-
id: gitlink_get_repo_webhook_history_list_02
title: 非仓库管理员获取Webhook历史推送列表,获取失败
severity: normal
run: True
url: /api/${env_repo_owner}/${env_repo_identifier}/webhooks/${id}/hooktasks.json.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
interface:
# 新建webhook
- gitlink_get_repo_add_webhook_03
# 测试推送
- gitlink_get_repo_webhook_test_01
teardown:
interface:
# 删除webhook
- gitlink_get_repo_delete_webhook_01
@@ -7,8 +7,17 @@ case_common:
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
# 前提条件:仅仓库管理员及以上角色才有权限,当前仓库存在webhook
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
@@ -25,7 +34,7 @@ case_info:
request_type: json
payload:
page: 1
limit: 15
limit: 10
files:
assert_response:
status_code: 200
@@ -36,41 +45,3 @@ case_info:
assert_sql:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
-
id: gitlink_get_repo_webhook_list_02
title: 非仓库管理员获取Webhook列表,获取失败
severity: normal
run: True
url: /api/${env_repo_owner}/${env_repo_identifier}/webhooks.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: json
payload:
page: 1
limit: 15
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
@@ -7,8 +7,17 @@ case_common:
- gitea
- webhook
- usefixtures: gitlink_login
- skip: 暂时还未完成
# 仅仓库管理员及以上角色才有权限
# 前提条件:仅仓库管理员及以上角色才有权限,当前仓库存在webhook
common_dependence:
setup:
interface:
# 新建私有仓库
- gitlink_projects_new_project_02
teardown:
interface:
# 删除仓库
- gitlink_projects_delete_project_01
case_info:
-
@@ -16,63 +25,35 @@ case_info:
title: 仓库管理员测试Webhook推送,请求成功
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${id}/tests.json
method: GET
url: /api/${repo_owner}/${repo_identifier}/webhooks/${repo_webhook_id}/test.json
method: POST
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
request_type: json
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assertMessage:
message: 断言接口返回包括字段total_count
expect_value: total_count
assert_type: contains
assert_sql:
extract:
case_dependence:
setup:
# 新建私有仓库
interface: gitlink_projects_new_project_02
# teardown:
# # 删除仓库
# interface: gitlink_projects_delete_project_01
-
id: gitlink_get_repo_webhook_test_02
title: 非仓库管理员测试Webhook推送,请求失败
severity: normal
run: True
url: /api/${repo_owner}/${repo_identifier}/webhooks/${id}/tests.json
method: GET
headers:
Content-Type: application/json; charset=utf-8;
cookies: ${cookies}
cookies:
request_type: params
payload:
owner:
repo:
id:
files:
assert_response:
status_code: 200
assert_status:
message: 断言接口status=403
expect_value: 403
message: 断言接口status=0
expect_value: 0
assert_type: ==
type_jsonpath: $.status
assert_message:
message: 断言接口message=你不是管理员,没有权限操作
expect_value: 你不是管理员,没有权限操作
message: 断言接口message=success
expect_value: success
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
setup:
interface:
# 新建webhook
- gitlink_get_repo_add_webhook_03
teardown:
interface:
# 删除webhook
- gitlink_get_repo_delete_webhook_01
@@ -0,0 +1,28 @@
case_common:
allure_epic: 开源夏令营GLCC
allure_feature: 项目报名
allure_story: 获取项目列表接口
case_markers:
- gitlink
- glcc
case_info:
-
id: glcc_get_project_category_list_01
title: 获取项目分类列表
severity: normal
run: True
url: /api/project_categories/pinned_index.json
method: GET
headers:
Content-Type": application/json; charset=utf-8;
cookies:
request_type: params
payload:
files:
assert_response:
status_code: 200
assert_sql:
extract:
type_jsonpath:
project_category_names: $.project_categories[*].name
@@ -0,0 +1,33 @@
case_common:
allure_epic: 开源夏令营GLCC
allure_feature: 项目报名
allure_story: 获取课题奖励方式列表
case_markers:
- gitlink
- glcc
case_info:
-
id: glcc_get_project_reward_list_01
title: 获取课题奖励方式列表
severity: normal
run: True
url: ${glcc_host}/api/glccSettings/settingList
method: GET
headers:
Content-Type": application/json; charset=utf-8;
cookies:
request_type: params
payload:
round: 3
type: rewardSetting
files:
assert_response:
status_code: 200
assert_sql:
extract:
type_jsonpath:
project_reward_id: $.data[*].id
project_money_reward_id: $.data[?(@.value =='现金奖励')].id
project_other_reward_ids: $.data[?(@.value !='现金奖励')].id
@@ -0,0 +1,115 @@
case_common:
allure_epic: 开源夏令营GLCC
allure_feature: 项目报名
allure_story: 导师报名项目
case_markers:
- glcc
- usefixtures: gitlink_login
common_dependence:
setup:
interface:
# 获取项目分类
- glcc_get_project_category_list_01
# 获取奖励方式
- glcc_get_project_reward_list_01
case_info:
-
id: glcc_teacher_apply_project_01
title: 导师报名项目,报名成功
severity: normal
run: True
url: ${glcc_host}/api/applyInformation/create
method: POST
headers:
Content-Type": application/json; charset=utf-8;
cookies:
request_type: json
payload:
round: 3
userId: ${env_user_id}
userName: ${env_nickname}
projectName: ${generate_catch_phrase()}
projectType: ${random.choice(${project_category_names})}
gitlinkUrl: ${faker.uri()}
contactName: ${generate_name(lan='zh')}
contactPhone: ${generate_phone(lan='zh')}
contactMail: ${generate_email(lan='zh')}
projectIntro: ${generate_catch_phrase()}
projectLogoId: ${attachment_id}
joinCooperativeCommunity: true
registrationTaskList:
-
taskName: ${generate_catch_phrase()}
taskUrl: ${faker.uri()}
taskDifficulty: ${random.choice([1,2,3])}
settingRewardId: ${random.choice(${project_other_reward_ids})}
settingRewardRemark: ${generate_catch_phrase()}
tutorName: ${generate_name(lan='zh')}
tutorPhone: ${generate_phone(lan='zh')}
tutorMail: ${generate_email(lan='zh')}
tutorAddress: ${generate_address(lan='zh')}
taskDesc: ${generate_catch_phrase()}
round: 3
-
taskName: ${generate_catch_phrase()}
taskUrl: ${faker.uri()}
taskDifficulty: ${random.choice([1,2,3])}
settingRewardId: ${random.choice(${project_other_reward_ids})}
settingRewardRemark: ${generate_catch_phrase()}
tutorName: ${generate_name(lan='zh')}
tutorPhone: ${generate_phone(lan='zh')}
tutorMail: ${generate_email(lan='zh')}
tutorAddress: ${generate_address(lan='zh')}
taskDesc: ${generate_catch_phrase()}
round: 3
-
taskName: ${generate_catch_phrase()}
taskUrl: ${faker.uri()}
taskDifficulty: ${random.choice([1,2,3])}
settingRewardId: ${random.choice(${project_other_reward_ids})}
settingRewardRemark: ${generate_catch_phrase()}
tutorName: ${generate_name(lan='zh')}
tutorPhone: ${generate_phone(lan='zh')}
tutorMail: ${generate_email(lan='zh')}
tutorAddress: ${generate_address(lan='zh')}
taskDesc: ${generate_catch_phrase()}
round: 3
- taskName: ${generate_catch_phrase()}
taskUrl: ${faker.uri()}
taskDifficulty: ${random.choice([1,2,3])}
settingRewardId: ${project_money_reward_id} # 现金奖励
settingRewardRemark: ${random.choice([12000,11000,10000,9000,8000,7000,6000])}
tutorName: ${generate_name(lan='zh')}
tutorPhone: ${generate_phone(lan='zh')}
tutorMail: ${generate_email(lan='zh')}
tutorAddress: ${generate_address(lan='zh')}
taskDesc: ${generate_catch_phrase()}
round: 3
- taskName: ${generate_catch_phrase()}
taskUrl: ${faker.uri()}
taskDifficulty: ${random.choice([1,2,3])}
settingRewardId: ${project_money_reward_id} # 现金奖励
settingRewardRemark: ${random.choice([12000,11000,10000,9000,8000,7000,6000])}
tutorName: ${generate_name(lan='zh')}
tutorPhone: ${generate_phone(lan='zh')}
tutorMail: ${generate_email(lan='zh')}
tutorAddress: ${generate_address(lan='zh')}
taskDesc: ${generate_catch_phrase()}
round: 3
files:
assert_response:
status_code: 200
assert_message:
message: 断言接口message=success
expect_value: success
assert_type: ==
type_jsonpath: $.message
assert_sql:
extract:
case_dependence:
setup:
interface:
# 上传项目logo,获取logo id
- glcc_upload_file_01
@@ -0,0 +1,37 @@
# 公共参数
case_common:
allure_epic: 开源夏令营GLCC
allure_feature: 项目报名
allure_story: 上传文件
case_markers:
- glcc
- upload_file
- usefixtures: gitlink_login
# 用例数据
case_info:
-
id: glcc_upload_file_01
title: 上传项目logo
severity:
run: true
url: /api/attachments.json
method: POST
headers:
cookies: ${cookie}
Content-Type: application/json; charset=utf-8;
cookies:
request_type: file
payload:
files: 31image.png
assert_response:
status_code: 200
asserFileName:
message: 断言接口返回的filename
expect_value: 30image.png
assert_type: ==
type_jsonpath: $.title
assert_sql:
extract:
type_jsonpath:
attachment_id: $.id
@@ -4,7 +4,6 @@ case_common:
allure_story: 开通/关闭工作台
case_markers:
- pms
- ok
- usefixtures: gitlink_login
# 前提条件:当前存在gitlink组织,组织已开通工作台
@@ -4,8 +4,6 @@ case_common:
allure_story: 开通/关闭工作台
case_markers:
- pms
- debug
- ok
- usefixtures: gitlink_login
# 前提条件:当前存在gitlink组织,组织未开通工作台
+17
View File
@@ -45,6 +45,12 @@ class FakerData:
# 生成并返回随机整数
return random.randint(min_val, max_val)
def generate_catch_phrase(self):
"""
:return: 生成妙句(口号) 输出结果都是英文
"""
return self.faker.catch_phrase()
def generate_phone(self, lan="en") -> int:
"""
:return: 随机生成手机号码
@@ -215,6 +221,17 @@ class FakerData:
return faker.province()
def generate_address(self, lan="en") -> str:
"""
:return: 生成地址
"""
if lan == "zh":
address = self.fk_zh.address()
else:
address = self.faker.address()
return address
@classmethod
def generate_time(cls, fmt='%Y-%m-%d %H:%M:%S') -> str:
"""
+1 -2
View File
@@ -28,10 +28,9 @@ def get_api_data(api_file_path: str, key: str = None):
api_data = []
if os.path.isdir(api_file_path):
logger.debug(f"目标路径是一个目录:{api_file_path}")
api_files = get_files(target=api_file_path, end=".yaml")
api_files = get_files(target=api_file_path, end=".yaml") + get_files(target=api_file_path, end=".yml")
for api_file in api_files:
api_data.append(YamlHandle(filename=api_file).read_yaml)
elif os.path.isfile(api_file_path):
logger.debug(f"目标路径是一个文件:{api_file_path}")
api_data.append(YamlHandle(filename=api_file_path).read_yaml)