Commit f7c5c75f authored by 王超's avatar 王超

工程管理新增备份还原清除接口及对应用例

parent 7cb148a1
...@@ -4,17 +4,17 @@ ...@@ -4,17 +4,17 @@
url: /api/v1/project/data/backup/${get_extract_data(import_remoteproject_id)}/true url: /api/v1/project/data/backup/${get_extract_data(import_remoteproject_id)}/true
method: post method: post
json: json:
["history","data","alarm","curve_root","curve_config","user_root","user_config","role_config","device_root","device_log","login_log","module_log"] ["history","data","alarm","curve_root","curve_config","user_root","user_config","role_config","device_root","device_log","login_log","module_log","formula"]
validate: validate:
- equals: {status_code: 200} - equals: {status_code: 200}
- name: 删除工程 - name: 删除工程(保留本地文件)
base_url: ${get_base_url(cms_url)} base_url: ${get_base_url(cms_url)}
request: request:
url: /api/v1/project/node/deletenodes url: /api/v1/project/node/deletenodes
method: put method: put
data: data:
ids: ${get_extract_data(import_remoteproject_id)} ids: ${get_extract_data(import_remoteproject_id)}
isDeleteFile: true isDeleteFile: false
validate: validate:
- equals: {status_code: 200} - equals: {status_code: 200}
\ No newline at end of file
- name: 查用户管理信息(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/authority/user?keyword=
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- equals: {name: SuperAdmin}
- not_equals: {userName: A}
- name: 查角色信息(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/authority/role
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- equals: {name: Tourist}
- not_equals: {name: 角色A}
- name: 查配方集(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/projectformulaset/get-all
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
extract:
formula_0: id.0
validate:
- equals: {status_code: 200}
- equals: {name: 配方集1}
- name: 查配方集(还原后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/projectformulaset/get-all
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
extract:
formula_collection_0: id.0
validate:
- equals: {status_code: 200}
- equals: {name: 配方集1}
- name: 查配方(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/runtimeformula/name/get-all?formulaSetId=${get_extract_data(formula_collection_0)}
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: name
- name: 查成分(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/runtimeformula/1/ingredient/get
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 500}
- not_contain: name
- name: 查模块日志(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/log/modulelog?moduleKey=Unlimited&startTime=2024-06-24+00:00:00&stopTime=2024-06-24+23:59:59&keyWord=&first=true
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: name
- name: 查设备日志(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/log/devicelog?deviceKey=Unlimited&startTime=2024-06-24+00:00:00&stopTime=2024-06-24+23:59:59&keyWord=&first=true
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: name
- name: 查登录日志(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/log/loginlog?startTime=2024-06-24+00:00:00&stopTime=2024-06-24+23:59:59&keyWord=&first=true
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: name
- name: 查曲线组(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/trend/curvegroup?keyword=
method: get
headers:
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1lIjoiU3VwZXJBZG1pbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL25hbWVpZGVudGlmaWVyIjoiU3VwZXJBZG1pbiIsImlzcyI6IkNNU3YyIiwiYXVkIjoiQXBpIn0.AJUOE6YQ5MAxDqHOIz-yQbpCKPNq5tPoFBWUY381qns
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: name
- name: 查询历史数据(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/data/aggregate
method: post
json: {"dataSetId":"history","dimensions":[{"aliasName":"","fieldName":"0","sort":0,"timeFormat":"yyyy-MM-dd HH:mm:ss"}],"measures":[{"aliasName":"","fieldName":"23","mode":4,"dataFormat":0,"sort":0,"mergeType":0}],"filters":[],"total":true,"pageSize":10,"pageIndex":1,"limit":10000,"noAggregation":false,"noDimensions":false,"whereJson":"","historyRawData":false,"historyUseWindow":true,"windowUnit":0,"windowMethod":1,"windowValue":1}
headers:
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: A2(4)
- name: 查询实时报警数据(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/data/original
method: post
json: {"dataSetId":"a9b66e92-6f83-44e3-ba02-ccbdb0f149c1","tableName":"报警管理-实时表","limit":500}
headers:
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: _id
- name: 查询历史报警数据(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/data/original
method: post
json: {"dataSetId":"e342f0fa-977d-459a-97b2-f4fc4b36c7e4","tableName":"报警管理-历史表","limit":500}
headers:
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: _id
- name: 查询数据(归档表-定时触发)(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/data/original
method: post
json:
{
"dataSetId": "134ea944-520d-4a18-b378-1b9f1d478f19",
"tableName": "归档表_定时触发",
"limit": 500
}
headers:
Content-Type: application/json;charset=UTF-8
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: { status_code: 200 }
- not_contain: A1
- name: 查询数据(实时聚合表)(清数据后)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/data/original
method: post
json:
{
"dataSetId": "796d7b93-032a-440c-b0da-877c4fee1511",
"tableName": "实时聚合表",
"limit": 500
}
headers:
Content-Type: application/json;charset=UTF-8
X-Project: ${get_extract_data(x_import_project)}
validate:
- equals: {status_code: 200}
- not_contain: A1
\ No newline at end of file
This diff is collapsed.
- name: 数据清除
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/project/data/clean/${get_extract_data(import_remoteproject_id)}?all=true
method: post
json:
["history","data","alarm","curve_root","curve_config","user_root","user_config","role_config","device_root","device_log","login_log","module_log","formula"]
validate:
- equals: {status_code: 200}
\ No newline at end of file
- name: 远程导入工程文件
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/project/node/importremoteproject
method: post
files:
file: ${get_project_path2()}\data\EngineeringManagement\2.1.0工程(升级验证)_升2.2.cmsproj
extract:
import_remoteproject_id: id
validate:
- equals: {status_code: 200}
- contains: id
- name: 数据恢复 - name: 数据恢复
base_url: ${get_base_url(cms_url)} base_url: ${get_base_url(cms_url)}
request: request:
url: /api/v1/project/${get_extract_data(import_remoteproject_id)}/import url: /api/v1/project/${get_extract_data(import_remoteproject_id)}/import
method: post method: post
files: files:
formFile: ${get_project_path()}\data\EngineeringManagement\升级工程备份文件(CMS2.2.0).cmsbak formFile: ${get_project_path()}\data\EngineeringManagement\验证备份还原备份数据.cmsbak
validate: validate:
- equals: {status_code: 200} - equals: {status_code: 200}
\ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
validate: validate:
- equals: {status_code: 200} - equals: {status_code: 200}
- name: 删除工程 - name: 删除工程(删除本地文件)
base_url: ${get_base_url(cms_url)} base_url: ${get_base_url(cms_url)}
request: request:
url: /api/v1/project/node/deletenodes url: /api/v1/project/node/deletenodes
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
validate: validate:
- equals: {status_code: 200} - equals: {status_code: 200}
- name: 删除工程 - name: 删除工程(保留本地文件)
base_url: ${get_base_url(cms_url)} base_url: ${get_base_url(cms_url)}
request: request:
url: /api/v1/project/node/deletenodes url: /api/v1/project/node/deletenodes
......
- name: 打开工程
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/project/node/updateprojectfile
method: put
data:
id: ${get_extract_data(import_remoteproject_id)}
isKeepOldFile: false
validate:
- equals: {status_code: 200}
- name: 获取导入的工程信息
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/project/${get_extract_data(import_remoteproject_id)}/info
method: get
extract:
x_import_project: identifier
import_project_name: name
validate:
- equals: {status_code: 200}
- contains: id
\ No newline at end of file
- name: 远程导入工程文件(备份还原工程)
base_url: ${get_base_url(cms_url)}
request:
url: /api/v1/project/node/importlocalproject
method: post
data:
localFilePath: ${get_project_path2()}\data\EngineeringManagement\验证数据备份还原(13版本).cmsproj
importConflictHandleType: 1
extract:
import_remoteproject_id: id
validate:
- equals: {status_code: 200}
- contains: id
\ No newline at end of file
...@@ -128,13 +128,51 @@ class TestCreat(): ...@@ -128,13 +128,51 @@ class TestCreat():
allure.dynamic.description(caseinfo['name']) allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo) RequestUtil().analysis_yaml(caseinfo)
@allure.story("接口名称:导入备份还原工程")
@pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/import_remote_project2.yml'))
def test_import_remote_project2(self, caseinfo):
allure.dynamic.title(caseinfo['name'])
allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo)
time.sleep(2)
@allure.story("接口名称:进入工程")
@pytest.mark.parametrize('caseinfo',
read_testcase_file('/testcase/1_EngineeringManagement/enter_project.yml'))
def test_enter_project(self, caseinfo):
allure.dynamic.title(caseinfo['name'])
allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo)
time.sleep(2)
@allure.story("接口名称:数据清空")
@pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_clear.yml'))
def test_data_clear(self, caseinfo):
allure.dynamic.title(caseinfo['name'])
allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo)
time.sleep(2)
@allure.story("接口名称:校验数据(数据清空后)")
@pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_check(data_clear).yml.yml'))
def test_check_data(self, caseinfo):
allure.dynamic.title(caseinfo['name'])
allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo)
@allure.story("接口名称:数据恢复") @allure.story("接口名称:数据恢复")
@pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_recovery.yml')) @pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_recovery.yml'))
def test_data_recovery(self, caseinfo): def test_data_recovery(self, caseinfo):
allure.dynamic.title(caseinfo['name']) allure.dynamic.title(caseinfo['name'])
allure.dynamic.description(caseinfo['name']) allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo) RequestUtil().analysis_yaml(caseinfo)
time.sleep(2)
@allure.story("接口名称:校验数据(数据还原后)")
@pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_check(data_recovery).yml'))
def test_check_data2(self, caseinfo):
allure.dynamic.title(caseinfo['name'])
allure.dynamic.description(caseinfo['name'])
RequestUtil().analysis_yaml(caseinfo)
@allure.story("接口名称:备份工程") @allure.story("接口名称:备份工程")
@pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_backup.yml')) @pytest.mark.parametrize('caseinfo', read_testcase_file('/testcase/1_EngineeringManagement/data_backup.yml'))
...@@ -144,6 +182,7 @@ class TestCreat(): ...@@ -144,6 +182,7 @@ class TestCreat():
RequestUtil().analysis_yaml(caseinfo) RequestUtil().analysis_yaml(caseinfo)
time.sleep(2) time.sleep(2)
@allure.story("接口名称:获取鉴权码") @allure.story("接口名称:获取鉴权码")
@pytest.mark.parametrize('caseinfo',read_testcase_file('/testcase/1_EngineeringManagement/get_requesttoken.yml')) @pytest.mark.parametrize('caseinfo',read_testcase_file('/testcase/1_EngineeringManagement/get_requesttoken.yml'))
def test_get_requesttoken(self, caseinfo): def test_get_requesttoken(self, caseinfo):
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment