diff options
Diffstat (limited to 'cases/profiles/text_js_files.py')
| -rw-r--r-- | cases/profiles/text_js_files.py | 476 |
1 files changed, 476 insertions, 0 deletions
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 |
