diff options
| author | auto_kg <[email protected]> | 2024-11-26 09:28:24 +0800 |
|---|---|---|
| committer | auto_kg <[email protected]> | 2024-11-26 09:28:24 +0800 |
| commit | f61f8ef68c6499c4c4705c3689d091e0861bf4a6 (patch) | |
| tree | 9d4c8ec048a50dea2a102bf5024db0e4205e705d | |
| parent | 21457ab02153978d126bc0eaa87af61ddc46c23e (diff) | |
增删改查、 column setting 适配
| -rw-r--r-- | cases/profiles/test_css_files.py | 476 | ||||
| -rw-r--r-- | cases/profiles/test_hijack_files.py | 10 | ||||
| -rw-r--r-- | cases/profiles/test_response_pages.py | 2 | ||||
| -rw-r--r-- | cases/profiles/test_service_function_forwardes.py | 19 | ||||
| -rw-r--r-- | cases/profiles/test_service_functions.py | 16 | ||||
| -rw-r--r-- | cases/profiles/test_shaping_profiles.py | 12 | ||||
| -rw-r--r-- | cases/profiles/test_ssl_decryption_keyrings.py | 20 | ||||
| -rw-r--r-- | cases/profiles/test_ssl_decryption_profiles.py | 14 | ||||
| -rw-r--r-- | cases/profiles/test_statistics_templates.py | 423 | ||||
| -rw-r--r-- | cases/profiles/test_tcp_proxy_profiles.py | 13 | ||||
| -rw-r--r-- | cases/profiles/test_traffic_mirroring_profiles.py | 2 | ||||
| -rw-r--r-- | cases/profiles/test_trusted_certificate_authorities.py | 9 | ||||
| -rw-r--r-- | cases/profiles/test_tsg_proxy_scripts.py | 14 | ||||
| -rw-r--r-- | cases/profiles/text_js_files.py | 476 |
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 |
