summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorguowenzheng <[email protected]>2024-11-26 09:36:06 +0800
committerguowenzheng <[email protected]>2024-11-26 09:36:06 +0800
commit081c19bf1bea7ee584a666c59e1bdfc3ae9a6949 (patch)
treea51ccf04b27347468686251359ccb5b7004616c1
parent9c51021e88e7e68cbc32fef46826202176e4df46 (diff)
parentf61f8ef68c6499c4c4705c3689d091e0861bf4a6 (diff)
Merge branch 'develop' of https://git.mesalab.cn/zhaokun/tsg_ui_script into develop
-rw-r--r--cases/profiles/test_css_files.py476
-rw-r--r--cases/profiles/test_hijack_files.py10
-rw-r--r--cases/profiles/test_response_pages.py2
-rw-r--r--cases/profiles/test_service_function_forwardes.py19
-rw-r--r--cases/profiles/test_service_functions.py16
-rw-r--r--cases/profiles/test_shaping_profiles.py12
-rw-r--r--cases/profiles/test_ssl_decryption_keyrings.py20
-rw-r--r--cases/profiles/test_ssl_decryption_profiles.py14
-rw-r--r--cases/profiles/test_statistics_templates.py423
-rw-r--r--cases/profiles/test_tcp_proxy_profiles.py13
-rw-r--r--cases/profiles/test_traffic_mirroring_profiles.py2
-rw-r--r--cases/profiles/test_trusted_certificate_authorities.py9
-rw-r--r--cases/profiles/test_tsg_proxy_scripts.py14
-rw-r--r--cases/profiles/text_js_files.py476
14 files changed, 1238 insertions, 268 deletions
diff --git a/cases/profiles/test_css_files.py b/cases/profiles/test_css_files.py
new file mode 100644
index 00000000..b23fd283
--- /dev/null
+++ b/cases/profiles/test_css_files.py
@@ -0,0 +1,476 @@
+# -*- coding: UTF-8 -*-
+import os
+import time
+import pytest
+from common.ui_common.profiles.css_files import CssFiles
+from common.read_data.read_data import ReadData
+from cases.conftest import demo_fixture
+from common.ui_common.profiles.profiles_public_operations import download_file
+import configparser
+import os
+import copy
+from config.workpath import workdir
+
+
+data = ReadData()
+
+
+class TestCSSFiles:
+ @pytest.mark.parametrize("data", data.read_data_profiles("css_files.json"), ids=data.generate_id)
+ def test_css_files(self, demo_fixture, data):
+ cf = CssFiles(demo_fixture)
+ cf.css_files_case(data)
+
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改"
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ def test_css_files_modify(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ css_files_name = css_files.create(data)
+ time.sleep(3)
+ css_files.query(data, require_assertion=1, Name=css_files_name)
+ css_files.audit_log("Create")
+ css_files_dict = css_files.query(data, require_assertion=1, Name=css_files_name)
+ css_files.modify(data)
+ time.sleep(2)
+ css_files_dict2 = css_files.query(data, require_assertion=2, ID=css_files_dict["ID"])
+ css_files.audit_log("Edit")
+ css_files.query(data, require_assertion=2, ID=css_files_dict2["ID"], Name=css_files_dict2["Name"])
+ css_files.delete()
+
+ # 上传20M文件
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据20M文件大小测试",
+ "model": "create",
+ "script": "20MFile.css->",
+ "script_type": "css->",
+ }
+ ],
+ ids=["创建js类型insert_files数据20M文件大小测试"]
+ )
+ def test_css_files_create20M(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ css_files_name = css_files.create(data)
+ time.sleep(18)
+ css_files.query(data, Name=css_files_name)
+ css_files.delete()
+
+ # 上传大于20M文件 反向测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据超过20M文件大小测试",
+ "model": "create",
+ "script": "Exceed20MFile.css->",
+ "script_type": "css->",
+ }
+ ],
+ ids=["创建js类型insert_files数据超过20M文件大小测试"]
+ )
+ def test_css_files_createExceed20M(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ css_files_name = css_files.create(data)
+
+ # Name输入框测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据name测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ ids=["创建js类型insert_files数据name测试"]
+ )
+ def test_name(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ name_group = ("", "123", "test",
+ "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest",
+ "1!@#$%^&*():\"{}|?><,./中文русскийEnglish")
+ for name in name_group:
+ css_files_name = css_files.create(data, name)
+ time.sleep(3)
+ if len(css_files_name) >= 4:
+ css_files.query(data, require_assertion=1, Name=css_files_name)
+ css_files.delete()
+ else:
+ print("创建失败")
+
+ # 错误信息校验、不输入必要数据
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据未上传文件测试",
+ "model": "create",
+ "script": "->",
+ "script_type": "css->",
+ },
+ {
+ "ids": "创建js类型insert_files数据文件类型为空测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "->",
+ },
+ {
+ "ids": "创建js类型insert_files数据上传错误类型文件测试",
+ "model": "create",
+ "script": "error_type.txt->",
+ "script_type": "->",
+ },
+ {
+ "ids": "创建js类型insert_files数据文件与文件类型不匹配测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "css->",
+ }
+ ],
+ ids=["创建js类型insert_files数据未上传文件测试", "创建js类型insert_files数据文件类型为空测试",
+ "创建js类型insert_files数据上传错误类型文件测试", "创建js类型insert_files数据文件与文件类型不匹配测试"]
+ )
+ def test_check_error(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ css_files.create(data)
+ time.sleep(1)
+
+ # 列设置测试
+ def test_column_setting(self, demo_fixture):
+ column_allname = ["UUID", "Vsys ID", "Name", "File", "Usage", "Modified Time",
+ "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = [ "Name", "File", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "File", "Usage"]
+ css_files = CssFiles(demo_fixture)
+ css_files.column_setting(column_defaultname, column_flags=0)
+ css_files.column_setting(column_requiredname, column_flags=1)
+ css_files.column_setting(column_name, column_flags=3)
+ css_files.column_setting(column_allname, column_flags=2)
+
+ # 翻页测试
+ def test_turn_pages(self, demo_fixture):
+ css_files = CssFiles(demo_fixture)
+ css_files.turn_pages(2)
+
+ # 切换语言测试
+ def test_language_change(self, demo_fixture):
+ css_files = CssFiles(demo_fixture)
+ css_files.language_change(2)
+ css_files.language_change(1)
+ css_files.language_change(0)
+
+ # 文件下载测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据文件下载测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ ids=["创建js类型insert_files数据文件下载测试"]
+ )
+ def test_file_download(self, data):
+ time.sleep(1)
+ driver = download_file()
+ css_files = CssFiles(driver)
+ # 文件下载的路径
+ download_path = os.path.join(workdir, "testdata", "ui_file", "profiles", "download_file")
+ # 创建后下载文件
+ css_files_name = css_files.create(data)
+ time.sleep(2)
+ css_files.file_download(Name=css_files_name)
+ time.sleep(1)
+ file_name = data["script"].split("->")[0].strip()
+ print("file_name=", file_name)
+ file_path = os.path.join(download_path, file_name)
+ print("file_path=", file_path)
+ try:
+ assert os.path.exists(file_path), f"文件 {file_name} 不存在于 {download_path} 目录中"
+ os.remove(file_path)
+ print("文件删除成功")
+ except:
+ print("文件不存在")
+ css_files.query(data, Name=css_files_name)
+ css_files.delete()
+ driver.quit()
+
+ # vsys相关测试
+ # @pytest.mark.parametrize(
+ # "data",
+ # [
+ # {
+ # "ids": "创建js类型insert_files数据vsys测试",
+ # "model": "create",
+ # "script": "test_js_1.js->",
+ # "script_type": "js->",
+ # "insert_position": "After Page Load->"
+ # }
+ # ],
+ # ids=["创建js类型insert_files数据vsys测试"]
+ # )
+ # def test_invisible_tvsys(self, demo_fixture, data):
+ # time.sleep(1)
+ # css_files = CssFiles(demo_fixture)
+ # css_files.vsys_case(data, "PerformanceTestVsys", "Tvsys", "None", "UIAutoTestVsys", "Tvsys", "None") # 平级Tvsys不可见
+
+ # ReferenceCount测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据referenceCount测试",
+ "model": "create",
+ "script": "test_css_1.css->",
+ }
+ ],
+ ids=["创建css类型files数据referenceCount测试"]
+ )
+ def test_referenceCount(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ css_files_name = css_files.create(data) # 在UIAutoTestVsys下创建
+ time.sleep(2)
+ policy_name = css_files.policy_create(css_files_name)
+ css_files.referenceCount_view(Name=css_files_name)
+ time.sleep(1)
+ css_files.policy_query(Name=policy_name)
+ css_files.policy_delete()
+ css_files.query(data, Name=css_files_name)
+ css_files.delete()
+
+ # 列表页底部All 按钮测试
+ def test_listPageBottom_allSelect_case(self, demo_fixture):
+ css_files = CssFiles(demo_fixture)
+ css_files.listPageBottom_allSelect()
+
+ # create edit 页面元素校验测试用例
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改"
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ def test_check_createAndEditPageElement(self, demo_fixture, data):
+ css_files = CssFiles(demo_fixture)
+ css_files.check_createAndEditPageElement(data)
+
+ # link功能测试用例
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "创建js类型insert_files数据link测试用例",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ ids=["创建js类型insert_files数据link测试用例"]
+ )
+ def test_link_case(self, demo_fixture, data):
+ link_parse = configparser.ConfigParser()
+ link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ link_parse.read(link_parse_dir, encoding="utf-8")
+ link_list_dict = []
+ link_list = [1] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
+ for i in link_list:
+ tmp_dict = {}
+ link_index = "link_{}".format(i)
+ tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ tmp_dict["url"] = link_parse.get(link_index, "url")
+ tmp_dict["username"] = link_parse.get(link_index, "username")
+ tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ link_list_dict.append(copy.deepcopy(tmp_dict))
+ print(link_list_dict)
+ """ 传参查考
+ link_list_dict = [
+ {
+ "link_dst_cluster": "42.49-User4Link",
+ "link_dst_vsys": "Vsys2test",
+ "url": "http://192.168.42.49/#/login",
+ "username": "admin",
+ "passwd": "admin"
+ },
+ ]
+ """
+ css_files = CssFiles(demo_fixture)
+ css_files.check_link_case(data, link_list_dict=link_list_dict)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改",
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ @pytest.mark.linktest
+ def test_lnk_extern_mod_case(self, demo_fixture, data):
+ # 解析 linkcluster.ini 配置文件
+ link_parse = configparser.ConfigParser()
+ link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ link_parse.read(link_parse_dir, encoding="utf-8")
+ link_list_dict = []
+ link_list = [1] # 1 代表 Link 其他源 cluster
+ for i in link_list:
+ tmp_dict = {}
+ link_index = "link_{}".format(i)
+ tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ tmp_dict["url"] = link_parse.get(link_index, "url")
+ tmp_dict["username"] = link_parse.get(link_index, "username")
+ tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ link_list_dict.append(copy.deepcopy(tmp_dict))
+ print(link_list_dict)
+ """ 传参查考
+ link_list_dict = [
+ {
+ "link_dst_cluster": "42.49-User4Link",
+ "link_dst_vsys": "Vsys2test",
+ "url": "http://192.168.42.49/#/login",
+ "username": "admin",
+ "passwd": "admin"
+ },
+ ]
+ """
+ ins = CssFiles(demo_fixture)
+ ins.chk_lnk_mod_case(data, link_list_dict=link_list_dict)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改",
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ @pytest.mark.linktest
+ def test_lnk_intern_mod_case(self, demo_fixture, data):
+ # 解析 linkcluster.ini 配置文件
+ link_parse = configparser.ConfigParser()
+ link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ link_parse.read(link_parse_dir, encoding="utf-8")
+ link_list_dict = []
+ link_list = [4] # # 4 代表 Link 本源 cluster
+ for i in link_list:
+ tmp_dict = {}
+ link_index = "link_{}".format(i)
+ tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ tmp_dict["url"] = link_parse.get(link_index, "url")
+ tmp_dict["username"] = link_parse.get(link_index, "username")
+ tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ link_list_dict.append(copy.deepcopy(tmp_dict))
+ print(link_list_dict)
+ """ 传参查考
+ link_list_dict = [
+ {
+ "link_dst_cluster": "42.49-User4Link",
+ "link_dst_vsys": "Vsys2test",
+ "url": "http://192.168.42.49/#/login",
+ "username": "admin",
+ "passwd": "admin"
+ },
+ ]
+ """
+ ins = CssFiles(demo_fixture)
+ ins.chk_lnk_mod_case(data, link_list_dict=link_list_dict)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ID": "!?#@",
+ "Name": "????????????!!!!!!!!!!!!@@@@@@@@@@@@@@@@#############################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%^^^^^^^^^^^^^^^^^^^^^^^^^^^^&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&******************************************???"
+ }
+ ],
+ ids=["查找特殊字符?@#!类型数据"]
+ )
+ @pytest.mark.special
+ def test_query_spec_chr(self, demo_fixture, data):
+ ins = CssFiles(demo_fixture)
+ ins.chk_query_spec_chr(data)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "test_audit_log_all_operation",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改"
+ }
+ ],
+ )
+ @pytest.mark.audit
+ def test_audit_log_all_operation(self, demo_fixture, data):
+ ins = CssFiles(demo_fixture)
+ ins._audit_log_all_operation(data)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "test_all_search_fields",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ )
+ def test_all_search_fields(self, demo_fixture, data):
+ ins = CssFiles(demo_fixture)
+ ins._all_search_fields(data)
+
+
+if __name__ == '__main__':
+ a = time.time()
+ print(111111111111)
+ pytest.main(['-sv', 'test_insert_scripts.py', '--check-max-tb=60000'])
+
+ b = time.time()
+ c = b - a
+ print("用时:::", c)
+ print(3333333333333)
+
+ """
+ # 在测试文件的当前路径执行如下命令执行测试用例:
+ pytest –cache-clear -v pytest_json.py --alluredir ./allure
+
+ # 执行如下命令生成测试报告(自动打开浏览器):
+ allure serve allure
+ """ \ No newline at end of file
diff --git a/cases/profiles/test_hijack_files.py b/cases/profiles/test_hijack_files.py
index 1a165ff3..d61f40b1 100644
--- a/cases/profiles/test_hijack_files.py
+++ b/cases/profiles/test_hijack_files.py
@@ -19,7 +19,7 @@ class TestHijackFiles:
@pytest.mark.parametrize("data", data.read_data_profiles("hijack_files.json"), ids=data.generate_id)
def test_hijackFiles(self, demo_fixture, data):
hijackFiles = HijackFiles(demo_fixture)
- hijackFiles.hijackFiles_case(data)
+ hijackFiles.hijack_files_case(data)
@pytest.mark.parametrize(
"data",
@@ -177,10 +177,10 @@ class TestHijackFiles:
# 列设置测试
def test_column_setting(self, demo_fixture):
- column_allname = ["ID", "Vsys ID", "Name", "Type", "File", "Reference Count", "Modified Time", "Last Modified By"]
- column_requiredname = ["ID", "Name"]
- column_defaultname = ["ID", "Name", "Type", "File", "Reference Count", "Modified Time", "Last Modified By"]
- column_name = ["ID", "Name", "File", "Reference Count"]
+ column_allname = ["UUID", "Vsys ID", "Name", "Type", "File", "Usage", "Modified Time", "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "Type", "File", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "File", "Usage"]
hijackFiles = HijackFiles(demo_fixture)
hijackFiles.column_setting(column_defaultname, column_flags=0)
hijackFiles.column_setting(column_requiredname, column_flags=1)
diff --git a/cases/profiles/test_response_pages.py b/cases/profiles/test_response_pages.py
index 20854ea1..d4ca0b5b 100644
--- a/cases/profiles/test_response_pages.py
+++ b/cases/profiles/test_response_pages.py
@@ -90,7 +90,7 @@ class TestResponsePages:
# 列设置测试
@pytest.mark.curd
- def test_column_setting(self,demo_fixture):
+ def test_column_setting(self, demo_fixture):
column_allname = ["Vsys ID", "UUID", "Name", "File", "Usage", "Modified Time", "Operator"]
column_requiredname = ["Name"]
column_defaultname = ["Name", "File", "Usage", "Modified Time", "Operator"]
diff --git a/cases/profiles/test_service_function_forwardes.py b/cases/profiles/test_service_function_forwardes.py
index f162d3b8..28c905d4 100644
--- a/cases/profiles/test_service_function_forwardes.py
+++ b/cases/profiles/test_service_function_forwardes.py
@@ -13,10 +13,12 @@ import copy
from config.workpath import workdir
class TestServiceFunctionForwardes:
+
@pytest.mark.parametrize("data", data.read_data_profiles("service_function_forwardes.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_serviceFunctionForwardes(self, demo_fixture, data):
serviceFunctionForwardes = ServiceFunctionForwardes(demo_fixture)
- serviceFunctionForwardes.serviceFunctionForwardes_case(data)
+ serviceFunctionForwardes.service_function_forwardes_case(data)
@pytest.mark.parametrize(
"data",
@@ -144,11 +146,12 @@ class TestServiceFunctionForwardes:
serviceFunctionForwardes.selectAlldelete_case(data)
#列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_current_name = ['ID', 'Name', 'Type', 'Load Balance Method', 'Load Balance Localization', 'Failure Action', 'Service Functions', 'Reference Count', 'Modified Time', 'Last Modified By']
- column_default_dname = ["ID", "Name"]
- column_custom_name = ["ID", "Name", "Load Balance Method", "Service Functions"]
- column_all_name = ['ID', 'Vsys ID', 'Name', 'Type', 'Load Balance Method', 'Load Balance Localization', 'Failure Action', 'Service Functions', 'Reference Count', 'Modified Time', 'Last Modified By']
+ column_current_name = ['Name', 'Type', 'Load Balance Method', 'Load Balance Localization', 'Failure Action', 'Service Functions', 'Usage', 'Modified Time', 'Last Modified By']
+ column_default_dname = ["Name"]
+ column_custom_name = ["Name", "Load Balance Method", "Service Functions"]
+ column_all_name = ['Vsys ID', 'Name', 'UUID', 'Type', 'Load Balance Method', 'Load Balance Localization', 'Failure Action', 'Service Functions', 'Usage', 'Modified Time', 'Last Modified By']
sff = ServiceFunctionForwardes(demo_fixture)
# column_flags: 0---保持当前状态 1---仅显示默认列 2---显示所有列 3---显示自定义列
sff.column_setting(column_current_name, column_flags=0)
@@ -256,6 +259,7 @@ class TestServiceFunctionForwardes:
sff.turn_pages("random_page_num")
#切换语言测试
+ @pytest.mark.curd
def test_language_change(self, demo_fixture):
sff = ServiceFunctionForwardes(demo_fixture)
sff.language_change(2)
@@ -347,13 +351,12 @@ class TestServiceFunctionForwardes:
],
ids=["创建service_function_forwarders数据再修改"]
)
- @pytest.mark.linktest
def test_lnk_extern_mod_case(self, demo_fixture, data):
link_parse = configparser.ConfigParser()
link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
link_parse.read(link_parse_dir, encoding="utf-8")
link_list_dict = []
- link_list = [1] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
+ link_list = [2] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
for i in link_list:
tmp_dict = {}
link_index = "link_{}".format(i)
@@ -467,7 +470,7 @@ class TestServiceFunctionForwardes:
}
],
)
- @pytest.mark.audit
+ # @pytest.mark.skip(reason='未写完')
def test_audit_log_all_operation(self, demo_fixture, data):
sff = ServiceFunctionForwardes(demo_fixture)
sff._audit_log_all_operation(data)
diff --git a/cases/profiles/test_service_functions.py b/cases/profiles/test_service_functions.py
index ad91233d..d3a03bd2 100644
--- a/cases/profiles/test_service_functions.py
+++ b/cases/profiles/test_service_functions.py
@@ -19,7 +19,7 @@ class TestServiceFunctions:
@pytest.mark.parametrize("data", data.read_data_profiles("service_functions.json"), ids=data.generate_id)
def test_serviceFunctions(self, demo_fixture, data):
serviceFunctions = ServiceFunctions(demo_fixture)
- serviceFunctions.serviceFunctions_case(data)
+ serviceFunctions.service_functions_case(data)
@pytest.mark.parametrize(
"data",
@@ -129,10 +129,10 @@ class TestServiceFunctions:
#列设置测试
def test_column_setting(self, demo_fixture):
- column_current_name = ['ID', 'Name', 'Device Tag', 'Enabled', 'Health Status', 'Connectivity', 'Health Check', 'Reference Count', 'Modified Time', 'Last Modified By']
- column_default_dname = ["ID", "Name"]
- column_custom_name = ["ID", "Name", "Enabled", "Health Check"]
- column_all_name = ['ID', 'Vsys ID', 'Name', 'Device Tag', 'Enabled', 'Health Status', 'Connectivity', 'Health Check', 'Reference Count', 'Modified Time', 'Last Modified By']
+ column_current_name = ['Name', 'Device Tag', 'Enabled', 'Health Status', 'Connectivity', 'Health Check', 'Usage', 'Modified Time', 'Last Modified By']
+ column_default_dname = ["Name"]
+ column_custom_name = ["Name", "Enabled", "Health Check"]
+ column_all_name = ['Vsys ID', 'Name', 'UUID', 'Device Tag', 'Enabled', 'Health Status', 'Connectivity', 'Health Check', 'Usage', 'Modified Time', 'Last Modified By']
serviceFunctions = ServiceFunctions(demo_fixture)
# column_flags: 0---保持当前状态 1---仅显示默认列 2---显示所有列 3---显示自定义列
serviceFunctions.column_setting(column_current_name, column_flags=0)
@@ -319,7 +319,7 @@ class TestServiceFunctions:
link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
link_parse.read(link_parse_dir, encoding="utf-8")
link_list_dict = []
- link_list = [1] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
+ link_list = [2] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
for i in link_list:
tmp_dict = {}
link_index = "link_{}".format(i)
@@ -364,7 +364,7 @@ class TestServiceFunctions:
link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
link_parse.read(link_parse_dir, encoding="utf-8")
link_list_dict = []
- link_list = [1] # 1 代表 Link 其他源 cluster
+ link_list = [2] # 1 代表 Link 其他源 cluster
for i in link_list:
tmp_dict = {}
link_index = "link_{}".format(i)
@@ -459,7 +459,7 @@ class TestServiceFunctions:
}
],
)
- @pytest.mark.audit
+ # @pytest.mark.skip(reason='未写完')
def test_audit_log_all_operation(self, demo_fixture, data):
sf = ServiceFunctions(demo_fixture)
sf._audit_log_all_operation(data)
diff --git a/cases/profiles/test_shaping_profiles.py b/cases/profiles/test_shaping_profiles.py
index 5005b5b8..5a96c67e 100644
--- a/cases/profiles/test_shaping_profiles.py
+++ b/cases/profiles/test_shaping_profiles.py
@@ -14,6 +14,7 @@ data = ReadData()
class TestShapingProfiles:
@pytest.mark.parametrize("data", data.read_data_profiles("shaping_profiles.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_shapingProfiles(self, demo_fixture, data):
shapingProfiles = ShapingProfiles(demo_fixture)
shapingProfiles.shaping_profiles_case(data)
@@ -126,11 +127,12 @@ class TestShapingProfiles:
sp.selectAlldelete_case(data)
#列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_current_name = ['ID', 'Name', 'Incoming/Outgoing', 'Bidirectional', 'Bandwidth Utilization', 'AQM Options', 'Type', 'Argument', 'Drops', 'Max Latency', 'Avg Q/Max Q', 'Reference Count', 'Modified Time', 'Last Modified By']
- column_default_dname = ["ID","Name"]
- column_custom_name = ["ID", "Name", "Incoming/Outgoing", "Type"]
- column_all_name = ['ID', 'Vsys ID', 'Name', 'Incoming/Outgoing', 'Bidirectional', 'Bandwidth Utilization', 'AQM Options', 'Type', 'Argument', 'Drops', 'Max Latency', 'Avg Q/Max Q', 'Reference Count', 'Modified Time', 'Last Modified By']
+ column_current_name = ['Name', 'Incoming/Outgoing', 'Bidirectional', 'Bandwidth Utilization', 'AQM Options', 'Type', 'Argument', 'Drops', 'Max Latency', 'Avg Q/Max Q', 'Usage', 'Modified Time', 'Last Modified By']
+ column_default_dname = ["Name"]
+ column_custom_name = ["Name", "Incoming/Outgoing", "Type"]
+ column_all_name = ['Vsys ID', 'Name', "UUID", 'Incoming/Outgoing', 'Bidirectional', 'Bandwidth Utilization', 'AQM Options', 'Type', 'Argument', 'Drops', 'Max Latency', 'Avg Q/Max Q', 'Usage', 'Modified Time', 'Last Modified By']
sp = ShapingProfiles(demo_fixture)
# column_flags: 0---保持当前状态 1---仅显示默认列 2---显示所有列 3---显示自定义列
sp.column_setting(column_current_name, column_flags=0)
@@ -478,7 +480,7 @@ class TestShapingProfiles:
}
],
)
- @pytest.mark.audit
+ # @pytest.mark.skip(reason='未写完')
def test_audit_log_all_operation(self, demo_fixture, data):
sp = ShapingProfiles(demo_fixture)
sp._audit_log_all_operation(data)
diff --git a/cases/profiles/test_ssl_decryption_keyrings.py b/cases/profiles/test_ssl_decryption_keyrings.py
index 0703ce5d..82915085 100644
--- a/cases/profiles/test_ssl_decryption_keyrings.py
+++ b/cases/profiles/test_ssl_decryption_keyrings.py
@@ -17,9 +17,10 @@ data = ReadData()
class TestSSLDecryptionKeyrings:
@pytest.mark.parametrize("data", data.read_data_profiles("ssl_decryption_keyrings.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_sslDecryptionKeyrings(self, demo_fixture, data):
sslDecryptionKeyrings = SSLDecryptionKeyrings(demo_fixture)
- sslDecryptionKeyrings.sslDecryptionKeyrings_case(data)
+ sslDecryptionKeyrings.ssl_decryption_keyrings_case(data)
@pytest.mark.parametrize(
"data",
@@ -35,7 +36,7 @@ class TestSSLDecryptionKeyrings:
"reissue_expiry_hours": "MSC->C-120",
"type": "Root-Certificate->Intermediate-Certificate",
"public_key_algorithm": "RSA-2048->RSA-1024",
- "certificate_revocation_list": "->不修改",
+ "certificate_revocation_list": "http://www.baidu.com->不修改",
"include_root": "on->off"
}
],
@@ -246,13 +247,14 @@ class TestSSLDecryptionKeyrings:
sslDecryptionKeyrings.create(data)
#列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_allname = ["ID", "Vsys ID", "Name", "Type", "Private Key", "Certificate", "Status", "Expiry Date",
- "CRL", "Issuer By", "Issued To", "Common Name", "Reference Count", "Modified Time", "Last Modified By"]
- column_requiredname = ["ID", "Name"]
- column_defaultname = ["ID", "Name", "Type", "Private Key", "Certificate", "Status", "Expiry Date",
- "CRL", "Issuer By", "Issued To", "Common Name", "Reference Count", "Modified Time", "Last Modified By"]
- column_name = ["ID", "Name", "Type", "Reference Count"]
+ column_allname = ["Vsys ID", "UUID", "Name", "Type", "Private Key", "Certificate", "Status", "Expiry Date",
+ "CRL", "Issuer By", "Issuer To", "Common Name", "Usage", "Modified Time", "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "Type", "Private Key", "Certificate", "Status", "Expiry Date",
+ "CRL", "Issuer By", "Issuer To", "Common Name", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "Type", "Usage"]
sslDecryptionKeyrings = SSLDecryptionKeyrings(demo_fixture)
sslDecryptionKeyrings.column_setting(column_defaultname, column_flags=0)
sslDecryptionKeyrings.column_setting(column_requiredname, column_flags=1)
@@ -265,6 +267,7 @@ class TestSSLDecryptionKeyrings:
sslDecryptionKeyrings.turn_pages(1)
# 切换语言测试
+ @pytest.mark.curd
def test_language_change(self, demo_fixture):
sslDecryptionKeyrings = SSLDecryptionKeyrings(demo_fixture)
sslDecryptionKeyrings.language_change(2)
@@ -712,7 +715,6 @@ class TestSSLDecryptionKeyrings:
}
],
)
- @pytest.mark.audit
def test_audit_log_all_operation(self, demo_fixture, data):
sdk = SSLDecryptionKeyrings(demo_fixture)
sdk._audit_log_all_operation(data)
diff --git a/cases/profiles/test_ssl_decryption_profiles.py b/cases/profiles/test_ssl_decryption_profiles.py
index 82abbfee..18171ee3 100644
--- a/cases/profiles/test_ssl_decryption_profiles.py
+++ b/cases/profiles/test_ssl_decryption_profiles.py
@@ -79,9 +79,10 @@ data = ReadData()
class TestSSLDecryptionProfiles:
@pytest.mark.parametrize("data", data.read_data_profiles("ssl_decryption_profiles.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_sslDecryptionProfiles(self, demo_fixture, data):
sslDecryptionProfiles = SSLDecryptionProfiles(demo_fixture)
- sslDecryptionProfiles.sslDecryptionProfiles_case(data)
+ sslDecryptionProfiles.ssl_decryption_profiles_case(data)
@pytest.mark.parametrize(
"data",
@@ -229,11 +230,12 @@ class TestSSLDecryptionProfiles:
sslDecryptionProfiles.delete()
#列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_allname = ["ID", "Vsys ID", "Name", "Certificate Checks", "Fail Action", "Dynamic Bypass", "Protocol Version", "Allow HTTP/2", "Reference Count", "Modified Time", "Last Modified By"]
- column_requiredname = ["ID", "Name"]
- column_defaultname = ["ID", "Name", "Certificate Checks", "Fail Action", "Dynamic Bypass", "Protocol Version", "Allow HTTP/2", "Reference Count", "Modified Time", "Last Modified By"]
- column_name = ["ID", "Name", "Dynamic Bypass", "Reference Count"]
+ column_allname = ["Vsys ID", "Name", "UUID","Certificate Checks", "Fail Action", "Dynamic Bypass", "Protocol Version", "Allow HTTP/2", "Usage", "Modified Time", "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "Certificate Checks", "Fail Action", "Dynamic Bypass", "Protocol Version", "Allow HTTP/2", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "Dynamic Bypass", "Usage"]
sslDecryptionProfiles = SSLDecryptionProfiles(demo_fixture)
sslDecryptionProfiles.column_setting(column_defaultname, column_flags=0)
sslDecryptionProfiles.column_setting(column_requiredname, column_flags=1)
@@ -246,6 +248,7 @@ class TestSSLDecryptionProfiles:
sslDecryptionProfiles.turn_pages(1)
# 切换语言测试
+ @pytest.mark.curd
def test_language_change(self, demo_fixture):
sslDecryptionProfiles = SSLDecryptionProfiles(demo_fixture)
sslDecryptionProfiles.language_change(2)
@@ -668,7 +671,6 @@ class TestSSLDecryptionProfiles:
}
],
)
- @pytest.mark.audit
def test_audit_log_all_operation(self, demo_fixture, data):
sdp = SSLDecryptionProfiles(demo_fixture)
sdp._audit_log_all_operation(data)
diff --git a/cases/profiles/test_statistics_templates.py b/cases/profiles/test_statistics_templates.py
index 0d392bbe..fd8144fa 100644
--- a/cases/profiles/test_statistics_templates.py
+++ b/cases/profiles/test_statistics_templates.py
@@ -11,219 +11,220 @@ import os
import copy
from config.workpath import workdir
-class RandomDatas:
- def random_combina_data(self):
- data_init = {
- "ids": "创建st的line图metics_{}_dimension_{}_{}",
- "model": "create",
- "chart": [
- {
- "chart_name": "default name",
- "visualization_type": "Line->",
- "metrics": [
-
- ],
- "dimensions": [
-
- ],
- "order_by": "->",
- "row_limit": "->",
- "min_in_size": "0->",
- "max_out_size": "0->"
- }
- ]
- }
- # 使用上面基础数据随机生成不同组合测试用例
- datas = []
- ids_list = []
-
- metrics_counter = ['incoming_bytes', 'outgoing_bytes', 'packets', 'incoming_packets', 'outgoing_packets', 'new_c2s_flows', 'new_s2c_flows', 'new_incoming_sessions', 'new_outgoing_sessions', 'sessions',
- 'new_unestablished_sessions', 'syn_packets', 'c2s_ip_fragments', 'c2s_ip_fragments', 'ip_fragments']
- metrics_counter_1 = ['incoming_bytes', 'outgoing_bytes', ] # 分类型,line图标匹配不同的类型
- metrics_counter_2 = ['new_c2s_flows', 'new_s2c_flows']
- metrics_counter_3 = [ 'new_incoming_sessions', 'new_outgoing_sessions', 'sessions', 'new_unestablished_sessions']
- metrics_counter_4 = [ 'packets', 'incoming_packets', 'outgoing_packets', 'syn_packets', 'c2s_ip_fragments', 'c2s_ip_fragments', 'ip_fragments']
- metrics_gauge = ['session_ids', 'client_ips', 'server_ips']
- metrics_gauge_2 = ['client_ips', 'server_ips']
- metrics_histogram = ['incoming_latency', 'outgoing_latency', 'latency', 'incoming_packet_length', 'outgoing_packet_length', 'packet_length']
- metrics_histogram_1 = ['incoming_latency', 'outgoing_latency', 'latency']
- metrics_histogram_2 = ['incoming_packet_length', 'outgoing_packet_length', 'packet_length']
- dimensions_init_list = ['Device Group', 'Client IP', 'Server IP', 'Client ASN', 'Server ASN', 'Client Country', 'Server Country', 'Server FQDN', 'Server Domain', 'Application',
- 'WebSketch Categories', 'Client IP Matched Objects', 'Server IP Matched Objects', 'C2S TTL', 'S2C TTL', 'C2S Link ID', 'S2C Link ID', 'Client Port', 'Server Port']
- metrics_aggr_1 = ["SUM", "RATE", "BITRATE"]
- metrics_aggr_2 = ["SUM", "RATE"]
- metrics_aggr_3 = ["APPROX_COUNT_DISTINCT_HLLD"]
- metrics_aggr_4 = ["PERCENTILES_HDR"]
- metrics_aggr_5 = ["MEDIAN_HDR", "P95_PERCENTILE_HDR","P99_PERCENTILE_HDR"]
- visualization_type_list = ["Table", "Line", "Bar", "Histogram"]
- for i in range(30): # 随机生成20个用例
- data = copy.deepcopy(data_init)
- random_num = random.choice([0, 1, 2, 3])
- if random_num == 0:
- visualization_type = "Table"
- data["chart"][0]["visualization_type"] = visualization_type
- metrics_num = random.choice([1, 2, 3, 4])
- metrics_list = random.sample(metrics_counter, k=metrics_num)
- # 随机生成metric
- for m_f in metrics_list:
- m_label = m_f.replace("_", "")
- if "bytes" in m_f:
- m_aggr = random.choice(metrics_aggr_1)
- else:
- m_aggr = random.choice(metrics_aggr_2)
- metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
- data["chart"][0]["metrics"].append(metrics_item)
- # 随机生成dimension
- dimension_num = random.choice([1, 2])
- dimension_list = random.sample(dimensions_init_list, k=dimension_num)
- for d_f in dimension_list:
- data["chart"][0]["dimensions"].append(d_f)
- elif random_num == 1:
- visualization_type = "Line"
- data["chart"][0]["visualization_type"] = visualization_type
- # 随机生成dimension line图dimension可以是1、0个
- dimension_num = random.choice([0, 1])
- if dimension_num == 1:
- dimension_list = random.sample(dimensions_init_list, k=1)
- data["chart"][0]["dimensions"].append(dimension_list[0])
- # 随机生成metric 只能是1个,必须是counter
- metrics_list = random.sample(metrics_counter, k=1)
- for m_f in metrics_list:
- m_label = m_f.replace("_", "")
- if "bytes" in m_f:
- m_aggr = random.choice(metrics_aggr_1)
- else:
- m_aggr = random.choice(metrics_aggr_2)
- metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
- data["chart"][0]["metrics"].append(metrics_item)
- else: # dimension为0个
- # 随机生成metric 可能是1、2、3、4个
- metrics_num = random.choice([1, 2, 3, 4])
- if metrics_num == 1 or metrics_num == 2:
- metrics_type = random.choice(["counter", "gauge", "histogram"])
- if metrics_type == "counter":
- tmp_num = random.choice([1, 2, 3, 4])
- if tmp_num == 1:
- metrics_list = random.sample(metrics_counter_1, k=metrics_num)
- elif tmp_num == 2:
- metrics_list = random.sample(metrics_counter_2, k=metrics_num)
- elif tmp_num == 3:
- metrics_list = random.sample(metrics_counter_3, k=metrics_num)
- else:
- metrics_list = random.sample(metrics_counter_4, k=metrics_num)
- elif metrics_type == "gauge":
- if metrics_num == 1:
- metrics_list = random.sample(metrics_gauge, k=metrics_num)
- else: # metrics_num == 2 # line图中,只有metrics_gauge_2中的两个元素可以同时存在
- metrics_list = random.sample(metrics_gauge_2, k=metrics_num)
- else:
- tmp_num_2 = random.choice([1, 2])
- if tmp_num_2 == 1:
- metrics_list = random.sample(metrics_histogram_1, k=metrics_num)
- else:
- metrics_list = random.sample(metrics_histogram_2, k=metrics_num)
- elif metrics_num == 3:
- metrics_type = random.choice(["counter", "histogram"])
- if metrics_type == "counter":
- tmp_num = random.choice([1, 2, 3])
- if tmp_num == 1:
- metrics_list = random.sample(metrics_counter_1, k=metrics_num)
- elif tmp_num == 2:
- metrics_list = random.sample(metrics_counter_3, k=metrics_num)
- else:
- metrics_list = random.sample(metrics_counter_4, k=metrics_num)
- else:
- tmp_num_2 = random.choice([1, 2])
- if tmp_num_2 == 1:
- metrics_list = random.sample(metrics_histogram_1, k=metrics_num)
- else:
- metrics_list = random.sample(metrics_histogram_2, k=metrics_num)
- elif metrics_num == 4:
- metrics_type = "counter"
- tmp_num = random.choice([1, 2])
- if tmp_num == 1:
- metrics_list = random.sample(metrics_counter_3, k=metrics_num)
- elif tmp_num == 2:
- metrics_list = random.sample(metrics_counter_4, k=metrics_num)
- else:
- print("error...")
- else:
- print("条件错误...{}".format(metrics_num))
- # 随机重组filed aggregate label
- jump_num = 1
- dimension_list = []
- for m_f in metrics_list:
- m_label = m_f.replace("_", "")
- if jump_num == 1: # 保证aggr单位都一样
- if metrics_type == "counter":
- if "bytes" in m_f:
- m_aggr = random.choice(metrics_aggr_1)
- else:
- m_aggr = random.choice(metrics_aggr_2)
- elif metrics_type == "gauge":
- m_aggr = random.choice(metrics_aggr_3)
- else:
- m_aggr = random.choice(metrics_aggr_5)
- jump_num = 0
- metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
- data["chart"][0]["metrics"].append(metrics_item)
- elif random_num == 2: # Bar
- visualization_type = "Bar"
- data["chart"][0]["visualization_type"] = visualization_type
- metrics_num = random.choice([1])
- metrics_list = random.sample(metrics_counter, k=metrics_num)
- # 随机生成metric
- for m_f in metrics_list:
- m_label = m_f.replace("_", "")
- if "bytes" in m_f:
- m_aggr = random.choice(metrics_aggr_1)
- else:
- m_aggr = random.choice(metrics_aggr_2)
- metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
- data["chart"][0]["metrics"].append(metrics_item)
- # 随机生成dimension
- dimension_num = random.choice([1])
- dimension_list = random.sample(dimensions_init_list, k=dimension_num)
- for d_f in dimension_list:
- data["chart"][0]["dimensions"].append(d_f)
- else: # Histogram
- visualization_type = "Histogram"
- data["chart"][0]["visualization_type"] = visualization_type
- metrics_num = random.choice([1])
- metrics_list = random.sample(metrics_histogram, k=metrics_num)
- # 随机生成metric
- for m_f in metrics_list:
- m_label = m_f.replace("_", "")
- m_aggr = random.choice(metrics_aggr_4)
- metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
- data["chart"][0]["metrics"].append(metrics_item)
- # 随机生成dimension
- dimension_num = random.choice([0])
- dimension_list = random.sample(dimensions_init_list, k=dimension_num)
- for d_f in dimension_list:
- data["chart"][0]["dimensions"].append(d_f)
-
- # 随机生成order by
- if visualization_type not in ["Histogram", "Line"]:
- order_by_list = []
- for j in metrics_list:
- order_by_list.append(j.replace("_", ""))
- order_by = random.choice(order_by_list)
- data["chart"][0]["order_by"] = "{}->".format(order_by)
- data["ids"] = "创建st的{}图metics_{}_dimension_{}_{}".format(visualization_type, "_".join(metrics_list), "_".join(dimension_list), i)
- datas.append(copy.deepcopy(data))
- ids_list.append(data["ids"])
- #print(datas)
- return datas, ids_list
+# class RandomDatas:
+# def random_combina_data(self):
+# data_init = {
+# "ids": "创建st的line图metics_{}_dimension_{}_{}",
+# "model": "create",
+# "chart": [
+# {
+# "chart_name": "default name",
+# "visualization_type": "Line->",
+# "metrics": [
+#
+# ],
+# "dimensions": [
+#
+# ],
+# "order_by": "->",
+# "row_limit": "->",
+# "min_in_size": "0->",
+# "max_out_size": "0->"
+# }
+# ]
+# }
+# # 使用上面基础数据随机生成不同组合测试用例
+# datas = []
+# ids_list = []
+#
+# metrics_counter = ['incoming_bytes', 'outgoing_bytes', 'packets', 'incoming_packets', 'outgoing_packets', 'new_c2s_flows', 'new_s2c_flows', 'new_incoming_sessions', 'new_outgoing_sessions', 'sessions',
+# 'new_unestablished_sessions', 'syn_packets', 'c2s_ip_fragments', 'c2s_ip_fragments', 'ip_fragments']
+# metrics_counter_1 = ['incoming_bytes', 'outgoing_bytes', ] # 分类型,line图标匹配不同的类型
+# metrics_counter_2 = ['new_c2s_flows', 'new_s2c_flows']
+# metrics_counter_3 = [ 'new_incoming_sessions', 'new_outgoing_sessions', 'sessions', 'new_unestablished_sessions']
+# metrics_counter_4 = [ 'packets', 'incoming_packets', 'outgoing_packets', 'syn_packets', 'c2s_ip_fragments', 'c2s_ip_fragments', 'ip_fragments']
+# metrics_gauge = ['session_ids', 'client_ips', 'server_ips']
+# metrics_gauge_2 = ['client_ips', 'server_ips']
+# metrics_histogram = ['incoming_latency', 'outgoing_latency', 'latency', 'incoming_packet_length', 'outgoing_packet_length', 'packet_length']
+# metrics_histogram_1 = ['incoming_latency', 'outgoing_latency', 'latency']
+# metrics_histogram_2 = ['incoming_packet_length', 'outgoing_packet_length', 'packet_length']
+# dimensions_init_list = ['Device Group', 'Client IP', 'Server IP', 'Client ASN', 'Server ASN', 'Client Country', 'Server Country', 'Server FQDN', 'Server Domain', 'Application',
+# 'WebSketch Categories', 'Client IP Matched Objects', 'Server IP Matched Objects', 'C2S TTL', 'S2C TTL', 'C2S Link ID', 'S2C Link ID', 'Client Port', 'Server Port']
+# metrics_aggr_1 = ["SUM", "RATE", "BITRATE"]
+# metrics_aggr_2 = ["SUM", "RATE"]
+# metrics_aggr_3 = ["APPROX_COUNT_DISTINCT_HLLD"]
+# metrics_aggr_4 = ["PERCENTILES_HDR"]
+# metrics_aggr_5 = ["MEDIAN_HDR", "P95_PERCENTILE_HDR","P99_PERCENTILE_HDR"]
+# visualization_type_list = ["Table", "Line", "Bar", "Histogram"]
+# for i in range(30): # 随机生成20个用例
+# data = copy.deepcopy(data_init)
+# random_num = random.choice([0, 1, 2, 3])
+# if random_num == 0:
+# visualization_type = "Table"
+# data["chart"][0]["visualization_type"] = visualization_type
+# metrics_num = random.choice([1, 2, 3, 4])
+# metrics_list = random.sample(metrics_counter, k=metrics_num)
+# # 随机生成metric
+# for m_f in metrics_list:
+# m_label = m_f.replace("_", "")
+# if "bytes" in m_f:
+# m_aggr = random.choice(metrics_aggr_1)
+# else:
+# m_aggr = random.choice(metrics_aggr_2)
+# metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
+# data["chart"][0]["metrics"].append(metrics_item)
+# # 随机生成dimension
+# dimension_num = random.choice([1, 2])
+# dimension_list = random.sample(dimensions_init_list, k=dimension_num)
+# for d_f in dimension_list:
+# data["chart"][0]["dimensions"].append(d_f)
+# elif random_num == 1:
+# visualization_type = "Line"
+# data["chart"][0]["visualization_type"] = visualization_type
+# # 随机生成dimension line图dimension可以是1、0个
+# dimension_num = random.choice([0, 1])
+# if dimension_num == 1:
+# dimension_list = random.sample(dimensions_init_list, k=1)
+# data["chart"][0]["dimensions"].append(dimension_list[0])
+# # 随机生成metric 只能是1个,必须是counter
+# metrics_list = random.sample(metrics_counter, k=1)
+# for m_f in metrics_list:
+# m_label = m_f.replace("_", "")
+# if "bytes" in m_f:
+# m_aggr = random.choice(metrics_aggr_1)
+# else:
+# m_aggr = random.choice(metrics_aggr_2)
+# metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
+# data["chart"][0]["metrics"].append(metrics_item)
+# else: # dimension为0个
+# # 随机生成metric 可能是1、2、3、4个
+# metrics_num = random.choice([1, 2, 3, 4])
+# if metrics_num == 1 or metrics_num == 2:
+# metrics_type = random.choice(["counter", "gauge", "histogram"])
+# if metrics_type == "counter":
+# tmp_num = random.choice([1, 2, 3, 4])
+# if tmp_num == 1:
+# metrics_list = random.sample(metrics_counter_1, k=metrics_num)
+# elif tmp_num == 2:
+# metrics_list = random.sample(metrics_counter_2, k=metrics_num)
+# elif tmp_num == 3:
+# metrics_list = random.sample(metrics_counter_3, k=metrics_num)
+# else:
+# metrics_list = random.sample(metrics_counter_4, k=metrics_num)
+# elif metrics_type == "gauge":
+# if metrics_num == 1:
+# metrics_list = random.sample(metrics_gauge, k=metrics_num)
+# else: # metrics_num == 2 # line图中,只有metrics_gauge_2中的两个元素可以同时存在
+# metrics_list = random.sample(metrics_gauge_2, k=metrics_num)
+# else:
+# tmp_num_2 = random.choice([1, 2])
+# if tmp_num_2 == 1:
+# metrics_list = random.sample(metrics_histogram_1, k=metrics_num)
+# else:
+# metrics_list = random.sample(metrics_histogram_2, k=metrics_num)
+# elif metrics_num == 3:
+# metrics_type = random.choice(["counter", "histogram"])
+# if metrics_type == "counter":
+# tmp_num = random.choice([1, 2, 3])
+# if tmp_num == 1:
+# metrics_list = random.sample(metrics_counter_1, k=metrics_num)
+# elif tmp_num == 2:
+# metrics_list = random.sample(metrics_counter_3, k=metrics_num)
+# else:
+# metrics_list = random.sample(metrics_counter_4, k=metrics_num)
+# else:
+# tmp_num_2 = random.choice([1, 2])
+# if tmp_num_2 == 1:
+# metrics_list = random.sample(metrics_histogram_1, k=metrics_num)
+# else:
+# metrics_list = random.sample(metrics_histogram_2, k=metrics_num)
+# elif metrics_num == 4:
+# metrics_type = "counter"
+# tmp_num = random.choice([1, 2])
+# if tmp_num == 1:
+# metrics_list = random.sample(metrics_counter_3, k=metrics_num)
+# elif tmp_num == 2:
+# metrics_list = random.sample(metrics_counter_4, k=metrics_num)
+# else:
+# print("error...")
+# else:
+# print("条件错误...{}".format(metrics_num))
+# # 随机重组filed aggregate label
+# jump_num = 1
+# dimension_list = []
+# for m_f in metrics_list:
+# m_label = m_f.replace("_", "")
+# if jump_num == 1: # 保证aggr单位都一样
+# if metrics_type == "counter":
+# if "bytes" in m_f:
+# m_aggr = random.choice(metrics_aggr_1)
+# else:
+# m_aggr = random.choice(metrics_aggr_2)
+# elif metrics_type == "gauge":
+# m_aggr = random.choice(metrics_aggr_3)
+# else:
+# m_aggr = random.choice(metrics_aggr_5)
+# jump_num = 0
+# metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
+# data["chart"][0]["metrics"].append(metrics_item)
+# elif random_num == 2: # Bar
+# visualization_type = "Bar"
+# data["chart"][0]["visualization_type"] = visualization_type
+# metrics_num = random.choice([1])
+# metrics_list = random.sample(metrics_counter, k=metrics_num)
+# # 随机生成metric
+# for m_f in metrics_list:
+# m_label = m_f.replace("_", "")
+# if "bytes" in m_f:
+# m_aggr = random.choice(metrics_aggr_1)
+# else:
+# m_aggr = random.choice(metrics_aggr_2)
+# metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
+# data["chart"][0]["metrics"].append(metrics_item)
+# # 随机生成dimension
+# dimension_num = random.choice([1])
+# dimension_list = random.sample(dimensions_init_list, k=dimension_num)
+# for d_f in dimension_list:
+# data["chart"][0]["dimensions"].append(d_f)
+# else: # Histogram
+# visualization_type = "Histogram"
+# data["chart"][0]["visualization_type"] = visualization_type
+# metrics_num = random.choice([1])
+# metrics_list = random.sample(metrics_histogram, k=metrics_num)
+# # 随机生成metric
+# for m_f in metrics_list:
+# m_label = m_f.replace("_", "")
+# m_aggr = random.choice(metrics_aggr_4)
+# metrics_item = "{}:{}:{}->".format(m_f, m_aggr, m_label)
+# data["chart"][0]["metrics"].append(metrics_item)
+# # 随机生成dimension
+# dimension_num = random.choice([0])
+# dimension_list = random.sample(dimensions_init_list, k=dimension_num)
+# for d_f in dimension_list:
+# data["chart"][0]["dimensions"].append(d_f)
+#
+# # 随机生成order by
+# if visualization_type not in ["Histogram", "Line"]:
+# order_by_list = []
+# for j in metrics_list:
+# order_by_list.append(j.replace("_", ""))
+# order_by = random.choice(order_by_list)
+# data["chart"][0]["order_by"] = "{}->".format(order_by)
+# data["ids"] = "创建st的{}图metics_{}_dimension_{}_{}".format(visualization_type, "_".join(metrics_list), "_".join(dimension_list), i)
+# datas.append(copy.deepcopy(data))
+# ids_list.append(data["ids"])
+# #print(datas)
+# return datas, ids_list
data = ReadData()
# @pytest.mark.skip(reason='需要重写')
class TestStatisticsTemplates:
@pytest.mark.parametrize("data", data.read_data_profiles("statistics_templates.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_statisticsTemplates(self, demo_fixture, data):
statisticsTemplates = StatisticsTemplates(demo_fixture)
- statisticsTemplates.statisticsTemplates_case(data)
+ statisticsTemplates.statistics_templates_case(data)
@pytest.mark.parametrize(
"data",
@@ -237,7 +238,6 @@ class TestStatisticsTemplates:
"visualization_type": "Line->Line",
"metrics": [
"incoming_bytes:BITRATE:incomingbytes->New C2S Flows:RATE:newc2sflows",
- "Outgoing Bytes:BITRATE->"
],
"dimensions": [
],
@@ -258,6 +258,7 @@ class TestStatisticsTemplates:
statisticsTemplates.modify(data)
statisticsTemplates.query(data, require_assertion=2, ID=statisticsTemplates_id)
+
# 选择all全部删除测试用
@pytest.mark.parametrize(
"data",
@@ -324,11 +325,12 @@ class TestStatisticsTemplates:
st.auditLogs_viewDetailsOnTheRight(data)
# 列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_current_name = ['ID', 'Name', 'Chart', 'Reference Count', 'Modified Time', 'Last Modified By']
- column_default_dname = ["ID", "Name"]
- column_custom_name = ["ID", "Name", "Chart"]
- column_all_name = ['ID', 'Vsys ID', 'Name', 'Chart', 'Reference Count', 'Modified Time', 'Last Modified By']
+ column_current_name = ['Name', 'Chart', 'Usage', 'Modified Time', 'Last Modified By']
+ column_default_dname = ["Name"]
+ column_custom_name = ["Name", "Chart"]
+ column_all_name = ['Vsys ID', 'Name', 'UUID', 'Chart', 'Usage', 'Modified Time', 'Last Modified By']
st = StatisticsTemplates(demo_fixture)
# column_flags: 0---保持当前状态 1---仅显示默认列 2---显示所有列 3---显示自定义列
st.column_setting(column_current_name, column_flags=0)
@@ -761,6 +763,7 @@ class TestStatisticsTemplates:
st.turn_pages("random_page_num")
#切换语言测试
+ @pytest.mark.curd
def test_language_change(self, demo_fixture):
st = StatisticsTemplates(demo_fixture)
st.language_change(2)
diff --git a/cases/profiles/test_tcp_proxy_profiles.py b/cases/profiles/test_tcp_proxy_profiles.py
index 1430afae..b845e301 100644
--- a/cases/profiles/test_tcp_proxy_profiles.py
+++ b/cases/profiles/test_tcp_proxy_profiles.py
@@ -13,9 +13,10 @@ data = ReadData()
class TestTcpProxyProfiles:
@pytest.mark.parametrize("data", data.read_data_profiles("tcp_proxy_profiles.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_tcpProxyProfiles(self, demo_fixture, data):
tcpProxyProfiles = TcpProxyProfiles(demo_fixture)
- tcpProxyProfiles.tcpProxyProfiles_case(data)
+ tcpProxyProfiles.tcp_proxy_profiles_case(data)
@pytest.mark.parametrize(
"data", [
@@ -431,11 +432,12 @@ class TestTcpProxyProfiles:
#列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_allname = ["ID", "Vsys ID", "Name", "General Options", "Client-Side Parameters", "Server-Side Parameters", "Reference Count", "Modified Time", "Last Modified By"]
- column_requiredname = ["ID", "Name"]
- column_defaultname = ["ID", "Name", "General Options", "Client-Side Parameters", "Server-Side Parameters", "Reference Count", "Modified Time", "Last Modified By"]
- column_name = ["ID", "Name", "Reference Count", "Last Modified By"]
+ column_allname = ["Vsys ID", "Name", "UUID", "General Options", "Client-Side Parameters", "Server-Side Parameters", "Usage", "Modified Time", "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "General Options", "Client-Side Parameters", "Server-Side Parameters", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "Usage", "Last Modified By"]
tcpProxyProfiles = TcpProxyProfiles(demo_fixture)
tcpProxyProfiles.column_setting(column_defaultname, column_flags=0)
tcpProxyProfiles.column_setting(column_requiredname, column_flags=1)
@@ -448,6 +450,7 @@ class TestTcpProxyProfiles:
tcpProxyProfiles.turn_pages(1)
# 切换语言测试
+ @pytest.mark.curd
def test_language_change(self, demo_fixture):
tcpProxyProfiles = TcpProxyProfiles(demo_fixture)
tcpProxyProfiles.language_change(2)
diff --git a/cases/profiles/test_traffic_mirroring_profiles.py b/cases/profiles/test_traffic_mirroring_profiles.py
index 900b7805..3cd3decf 100644
--- a/cases/profiles/test_traffic_mirroring_profiles.py
+++ b/cases/profiles/test_traffic_mirroring_profiles.py
@@ -161,7 +161,7 @@ class TestTrafficMirroringProfiles:
#列设置测试
@pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_allname = ["Vsys ID", "Name", "VLAN ID", "Usage", "Modified Time", "Last Modified By"]
+ column_allname = ["Vsys ID", "Name", "UUID", "VLAN ID", "Usage", "Modified Time", "Last Modified By"]
column_requiredname = ["Name"]
column_defaultname = ["Name", "VLAN ID", "Usage", "Modified Time", "Last Modified By"]
column_name = ["Name", "Usage", "Last Modified By"]
diff --git a/cases/profiles/test_trusted_certificate_authorities.py b/cases/profiles/test_trusted_certificate_authorities.py
index 505574a0..2f8a7454 100644
--- a/cases/profiles/test_trusted_certificate_authorities.py
+++ b/cases/profiles/test_trusted_certificate_authorities.py
@@ -154,10 +154,10 @@ class TestTrustedCertificateAuthorities:
# 列设置测试
def test_column(self, demo_fixture):
time.sleep(1)
- column_allname = ["ID", "Vsys ID", "Name", "File", "Issuer By", "Issued To", "Status", "Expiry Date", "Common Name", "Certificate Fingerprint", "Disabled/Enabled", "Modified Time", "Last Modified By"]
- column_requiredname = ["ID", "Name"]
- column_defaultname = ["ID", "Name", "File", "Issuer By", "Issued To", "Status", "Expiry Date", "Common Name", "Certificate Fingerprint", "Modified Time", "Last Modified By"]
- column_name = ["ID", "Name", "File", "Issuer By", "Issued To", "Status"]
+ column_allname = ["Vsys ID", "Name", "UUID", "File", "Issuer By", "Issuer To", "Status", "Expiry Date", "Common Name", "Certificate Fingerprint", "Disabled/Enabled", "Modified Time", "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "File", "Issuer By", "Issuer To", "Status", "Expiry Date", "Common Name", "Certificate Fingerprint", "Modified Time", "Last Modified By", "Disabled/Enabled"]
+ column_name = ["Name", "File", "Issuer By", "Issuer To", "Status"]
trustedCertificateAuthorities = TrustedCertificateAuthorities(demo_fixture)
trustedCertificateAuthorities.column_setting(column_defaultname, column_flags=0)
trustedCertificateAuthorities.column_setting(column_requiredname, column_flags=1)
@@ -315,6 +315,7 @@ class TestTrustedCertificateAuthorities:
],
ids=["创建trusted_certificate_authorities数据_link测试用例"]
)
+ @pytest.mark.skip()
def test_link_case(self, demo_fixture, data):
link_parse = configparser.ConfigParser()
link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
diff --git a/cases/profiles/test_tsg_proxy_scripts.py b/cases/profiles/test_tsg_proxy_scripts.py
index 3162447b..9c58d6ce 100644
--- a/cases/profiles/test_tsg_proxy_scripts.py
+++ b/cases/profiles/test_tsg_proxy_scripts.py
@@ -14,9 +14,10 @@ data = ReadData()
class TestTSGProxyScripts:
@pytest.mark.parametrize("data", data.read_data_profiles("tsg_proxy_scripts.json"), ids=data.generate_id)
+ @pytest.mark.curd
def test_insertScripts(self, demo_fixture, data):
tsgProxyScripts = TSGProxyScripts(demo_fixture)
- tsgProxyScripts.tsgProxyScripts_case(data)
+ tsgProxyScripts.tsg_proxy_scripts_case(data)
@pytest.mark.parametrize(
"data",
@@ -154,11 +155,12 @@ class TestTSGProxyScripts:
tsgProxyScripts_name = tsgProxyScripts.create(data)
# 列设置测试
+ @pytest.mark.curd
def test_column_setting(self, demo_fixture):
- column_allname = ["ID", "Vsys ID", "Name", "Timeout", "File", "Reference Count", "Modified Time", "Last Modified By"]
- column_requiredname = ["ID", "Name"]
- column_defaultname = ["ID", "Name", "Timeout", "File", "Reference Count", "Modified Time", "Last Modified By"]
- column_name = ["ID", "Name", "Reference Count", "Modified Time"]
+ column_allname = ["Vsys ID", "Name", "UUID","Timeout", "File", "Usage", "Modified Time", "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "Timeout", "File", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "Usage", "Modified Time"]
tsgProxyScripts = TSGProxyScripts(demo_fixture)
tsgProxyScripts.column_setting(column_defaultname, column_flags=0)
tsgProxyScripts.column_setting(column_requiredname, column_flags=1)
@@ -171,6 +173,7 @@ class TestTSGProxyScripts:
tsgProxyScripts.turn_pages(2)
# 切换语言测试
+ @pytest.mark.curd
def test_language_change(self, demo_fixture):
tsgProxyScripts = TSGProxyScripts(demo_fixture)
tsgProxyScripts.language_change(2)
@@ -332,7 +335,6 @@ class TestTSGProxyScripts:
}
],
)
- @pytest.mark.audit
def test_audit_log_all_operation(self, demo_fixture, data):
tp = TSGProxyScripts(demo_fixture)
tp._audit_log_all_operation(data)
diff --git a/cases/profiles/text_js_files.py b/cases/profiles/text_js_files.py
new file mode 100644
index 00000000..e6e88b40
--- /dev/null
+++ b/cases/profiles/text_js_files.py
@@ -0,0 +1,476 @@
+# -*- coding: UTF-8 -*-
+import os
+import time
+import pytest
+from common.ui_common.profiles.js_files import JsFiles
+from common.read_data.read_data import ReadData
+from cases.conftest import demo_fixture
+from common.ui_common.profiles.profiles_public_operations import download_file
+import configparser
+import os
+import copy
+from config.workpath import workdir
+
+
+data = ReadData()
+
+
+class TestJsFiles:
+ @pytest.mark.parametrize("data", data.read_data_profiles("js_files.json"), ids=data.generate_id)
+ def test_css_files(self, demo_fixture, data):
+ cf = JsFiles(demo_fixture)
+ cf.js_files_case(data)
+
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改"
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ def test_js_files_modify(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ js_files_name = js_files.create(data)
+ time.sleep(3)
+ js_files.query(data, require_assertion=1, Name=js_files_name)
+ js_files.audit_log("Create")
+ js_files_dict = js_files.query(data, require_assertion=1, Name=js_files_name)
+ js_files.modify(data)
+ time.sleep(2)
+ js_files_dict2 = js_files.query(data, require_assertion=2, ID=js_files_dict["ID"])
+ js_files.audit_log("Edit")
+ js_files.query(data, require_assertion=2, ID=js_files_dict2["ID"], Name=js_files_dict2["Name"])
+ js_files.delete()
+
+ # 上传20M文件
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据20M文件大小测试",
+ "model": "create",
+ "script": "20MFile.css->",
+ "script_type": "css->",
+ }
+ ],
+ ids=["创建js类型insert_files数据20M文件大小测试"]
+ )
+ def test_js_files_create20M(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ js_files_name = js_files.create(data)
+ time.sleep(18)
+ js_files.query(data, Name=js_files_name)
+ js_files.delete()
+
+ # 上传大于20M文件 反向测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据超过20M文件大小测试",
+ "model": "create",
+ "script": "Exceed20MFile.css->",
+ "script_type": "css->",
+ }
+ ],
+ ids=["创建js类型insert_files数据超过20M文件大小测试"]
+ )
+ def test_js_files_createExceed20M(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ js_files_name = js_files.create(data)
+
+ # Name输入框测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据name测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ ids=["创建js类型insert_files数据name测试"]
+ )
+ def test_name(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ name_group = ("", "123", "test",
+ "testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest",
+ "1!@#$%^&*():\"{}|?><,./中文русскийEnglish")
+ for name in name_group:
+ js_files_name = js_files.create(data, name)
+ time.sleep(3)
+ if len(js_files_name) >= 4:
+ js_files.query(data, require_assertion=1, Name=js_files_name)
+ js_files.delete()
+ else:
+ print("创建失败")
+
+ # 错误信息校验、不输入必要数据
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据未上传文件测试",
+ "model": "create",
+ "script": "->",
+ "script_type": "css->",
+ },
+ {
+ "ids": "创建js类型insert_files数据文件类型为空测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "->",
+ },
+ {
+ "ids": "创建js类型insert_files数据上传错误类型文件测试",
+ "model": "create",
+ "script": "error_type.txt->",
+ "script_type": "->",
+ },
+ {
+ "ids": "创建js类型insert_files数据文件与文件类型不匹配测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "css->",
+ }
+ ],
+ ids=["创建js类型insert_files数据未上传文件测试", "创建js类型insert_files数据文件类型为空测试",
+ "创建js类型insert_files数据上传错误类型文件测试", "创建js类型insert_files数据文件与文件类型不匹配测试"]
+ )
+ def test_check_error(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ js_files.create(data)
+ time.sleep(1)
+
+ # 列设置测试
+ def test_column_setting(self, demo_fixture):
+ column_allname = ["UUID", "Vsys ID", "Name", "File", "Usage", "Modified Time",
+ "Last Modified By"]
+ column_requiredname = ["Name"]
+ column_defaultname = ["Name", "File", "Usage", "Modified Time", "Last Modified By"]
+ column_name = ["Name", "File", "Usage"]
+ js_files = JsFiles(demo_fixture)
+ js_files.column_setting(column_defaultname, column_flags=0)
+ js_files.column_setting(column_requiredname, column_flags=1)
+ js_files.column_setting(column_name, column_flags=3)
+ js_files.column_setting(column_allname, column_flags=2)
+
+ # 翻页测试
+ def test_turn_pages(self, demo_fixture):
+ js_files = JsFiles(demo_fixture)
+ js_files.turn_pages(2)
+
+ # 切换语言测试
+ def test_language_change(self, demo_fixture):
+ js_files = JsFiles(demo_fixture)
+ js_files.language_change(2)
+ js_files.language_change(1)
+ js_files.language_change(0)
+
+ # 文件下载测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据文件下载测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ ids=["创建js类型insert_files数据文件下载测试"]
+ )
+ def test_file_download(self, data):
+ time.sleep(1)
+ driver = download_file()
+ js_files = JsFiles(driver)
+ # 文件下载的路径
+ download_path = os.path.join(workdir, "testdata", "ui_file", "profiles", "download_file")
+ # 创建后下载文件
+ js_files_name = js_files.create(data)
+ time.sleep(2)
+ js_files.file_download(Name=js_files_name)
+ time.sleep(1)
+ file_name = data["script"].split("->")[0].strip()
+ print("file_name=", file_name)
+ file_path = os.path.join(download_path, file_name)
+ print("file_path=", file_path)
+ try:
+ assert os.path.exists(file_path), f"文件 {file_name} 不存在于 {download_path} 目录中"
+ os.remove(file_path)
+ print("文件删除成功")
+ except:
+ print("文件不存在")
+ js_files.query(data, Name=js_files_name)
+ js_files.delete()
+ driver.quit()
+
+ # vsys相关测试
+ # @pytest.mark.parametrize(
+ # "data",
+ # [
+ # {
+ # "ids": "创建js类型insert_files数据vsys测试",
+ # "model": "create",
+ # "script": "test_js_1.js->",
+ # "script_type": "js->",
+ # "insert_position": "After Page Load->"
+ # }
+ # ],
+ # ids=["创建js类型insert_files数据vsys测试"]
+ # )
+ # def test_invisible_tvsys(self, demo_fixture, data):
+ # time.sleep(1)
+ # js_files = JsFiles(demo_fixture)
+ # js_files.vsys_case(data, "PerformanceTestVsys", "Tvsys", "None", "UIAutoTestVsys", "Tvsys", "None") # 平级Tvsys不可见
+
+ # ReferenceCount测试
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据referenceCount测试",
+ "model": "create",
+ "script": "test_js_1.js->",
+ }
+ ],
+ ids=["创建js类型files数据referenceCount测试"]
+ )
+ def test_referenceCount(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ js_files_name = js_files.create(data) # 在UIAutoTestVsys下创建
+ time.sleep(2)
+ policy_name = js_files.policy_create(js_files_name)
+ js_files.referenceCount_view(Name=js_files_name)
+ time.sleep(1)
+ js_files.policy_query(Name=policy_name)
+ js_files.policy_delete()
+ js_files.query(data, Name=js_files_name)
+ js_files.delete()
+
+ # 列表页底部All 按钮测试
+ def test_listPageBottom_allSelect_case(self, demo_fixture):
+ js_files = JsFiles(demo_fixture)
+ js_files.listPageBottom_allSelect()
+
+ # create edit 页面元素校验测试用例
+ @pytest.mark.parametrize(
+ "data",
+ [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改"
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ def test_check_createAndEditPageElement(self, demo_fixture, data):
+ js_files = JsFiles(demo_fixture)
+ js_files.check_createAndEditPageElement(data)
+
+ # link功能测试用例
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "创建js类型insert_files数据link测试用例",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ ids=["创建js类型insert_files数据link测试用例"]
+ )
+ def test_link_case(self, demo_fixture, data):
+ link_parse = configparser.ConfigParser()
+ link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ link_parse.read(link_parse_dir, encoding="utf-8")
+ link_list_dict = []
+ link_list = [1] # 可取值 1、2、 3、4、5 #这些取值来自linkcluster.ini配置文件
+ for i in link_list:
+ tmp_dict = {}
+ link_index = "link_{}".format(i)
+ tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ tmp_dict["url"] = link_parse.get(link_index, "url")
+ tmp_dict["username"] = link_parse.get(link_index, "username")
+ tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ link_list_dict.append(copy.deepcopy(tmp_dict))
+ print(link_list_dict)
+ """ 传参查考
+ link_list_dict = [
+ {
+ "link_dst_cluster": "42.49-User4Link",
+ "link_dst_vsys": "Vsys2test",
+ "url": "http://192.168.42.49/#/login",
+ "username": "admin",
+ "passwd": "admin"
+ },
+ ]
+ """
+ js_files = JsFiles(demo_fixture)
+ js_files.check_link_case(data, link_list_dict=link_list_dict)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改",
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ @pytest.mark.linktest
+ def test_lnk_extern_mod_case(self, demo_fixture, data):
+ # 解析 linkcluster.ini 配置文件
+ link_parse = configparser.ConfigParser()
+ link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ link_parse.read(link_parse_dir, encoding="utf-8")
+ link_list_dict = []
+ link_list = [1] # 1 代表 Link 其他源 cluster
+ for i in link_list:
+ tmp_dict = {}
+ link_index = "link_{}".format(i)
+ tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ tmp_dict["url"] = link_parse.get(link_index, "url")
+ tmp_dict["username"] = link_parse.get(link_index, "username")
+ tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ link_list_dict.append(copy.deepcopy(tmp_dict))
+ print(link_list_dict)
+ """ 传参查考
+ link_list_dict = [
+ {
+ "link_dst_cluster": "42.49-User4Link",
+ "link_dst_vsys": "Vsys2test",
+ "url": "http://192.168.42.49/#/login",
+ "username": "admin",
+ "passwd": "admin"
+ },
+ ]
+ """
+ ins = JsFiles(demo_fixture)
+ ins.chk_lnk_mod_case(data, link_list_dict=link_list_dict)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "创建js类型insert_files数据再修改css类型数据",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改",
+ }
+ ],
+ ids=["创建js类型insert_files数据再修改css类型数据"]
+ )
+ @pytest.mark.linktest
+ def test_lnk_intern_mod_case(self, demo_fixture, data):
+ # 解析 linkcluster.ini 配置文件
+ link_parse = configparser.ConfigParser()
+ link_parse_dir = os.path.join(workdir, "config", "linkcluster.ini")
+ link_parse.read(link_parse_dir, encoding="utf-8")
+ link_list_dict = []
+ link_list = [4] # # 4 代表 Link 本源 cluster
+ for i in link_list:
+ tmp_dict = {}
+ link_index = "link_{}".format(i)
+ tmp_dict["link_dst_cluster"] = link_parse.get(link_index, "link_dst_cluster")
+ tmp_dict["link_dst_vsys"] = link_parse.get(link_index, "link_dst_vsys")
+ tmp_dict["url"] = link_parse.get(link_index, "url")
+ tmp_dict["username"] = link_parse.get(link_index, "username")
+ tmp_dict["passwd"] = link_parse.get(link_index, "passwd")
+ link_list_dict.append(copy.deepcopy(tmp_dict))
+ print(link_list_dict)
+ """ 传参查考
+ link_list_dict = [
+ {
+ "link_dst_cluster": "42.49-User4Link",
+ "link_dst_vsys": "Vsys2test",
+ "url": "http://192.168.42.49/#/login",
+ "username": "admin",
+ "passwd": "admin"
+ },
+ ]
+ """
+ ins = JsFiles(demo_fixture)
+ ins.chk_lnk_mod_case(data, link_list_dict=link_list_dict)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ID": "!?#@",
+ "Name": "????????????!!!!!!!!!!!!@@@@@@@@@@@@@@@@#############################$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%^^^^^^^^^^^^^^^^^^^^^^^^^^^^&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&******************************************???"
+ }
+ ],
+ ids=["查找特殊字符?@#!类型数据"]
+ )
+ @pytest.mark.special
+ def test_query_spec_chr(self, demo_fixture, data):
+ ins = JsFiles(demo_fixture)
+ ins.chk_query_spec_chr(data)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "test_audit_log_all_operation",
+ "model": "modify",
+ "script": "test_js_1.js->test_css_1.css",
+ "script_type": "js->css",
+ "insert_position": "Before Page Load->不修改"
+ }
+ ],
+ )
+ @pytest.mark.audit
+ def test_audit_log_all_operation(self, demo_fixture, data):
+ ins = JsFiles(demo_fixture)
+ ins._audit_log_all_operation(data)
+
+ @pytest.mark.parametrize(
+ "data", [
+ {
+ "ids": "test_all_search_fields",
+ "model": "create",
+ "script": "test_js_1.js->",
+ "script_type": "js->",
+ "insert_position": "After Page Load->"
+ }
+ ],
+ )
+ def test_all_search_fields(self, demo_fixture, data):
+ ins = JsFiles(demo_fixture)
+ ins._all_search_fields(data)
+
+
+if __name__ == '__main__':
+ a = time.time()
+ print(111111111111)
+ pytest.main(['-sv', 'test_insert_scripts.py', '--check-max-tb=60000'])
+
+ b = time.time()
+ c = b - a
+ print("用时:::", c)
+ print(3333333333333)
+
+ """
+ # 在测试文件的当前路径执行如下命令执行测试用例:
+ pytest –cache-clear -v pytest_json.py --alluredir ./allure
+
+ # 执行如下命令生成测试报告(自动打开浏览器):
+ allure serve allure
+ """ \ No newline at end of file