网站备案通讯地址做自媒体挣钱的网站有哪些

张小明 2026/1/16 2:53:20
网站备案通讯地址,做自媒体挣钱的网站有哪些,php网站添加验证码,网站开发类书籍#x1f345; 点击文末小卡片#xff0c;免费获取软件测试全套资料#xff0c;资料在手#xff0c;涨薪更快自动化本身是为了提高工作效率#xff0c;不论选择何种框架#xff0c;何种开发语言#xff0c;我们最终想实现的效果#xff0c;就是让大家用最少的代码#…点击文末小卡片免费获取软件测试全套资料资料在手涨薪更快自动化本身是为了提高工作效率不论选择何种框架何种开发语言我们最终想实现的效果就是让大家用最少的代码最小的投入完成自动化测试的工作。基于这个想法我们的接口自动化测试思路如下1.不变的内容全部通过配置化来实现比如脚本执行的环境、请求的 HOST、URL 路径、测试数据等2.环境和数据关联变更依据不同的环境选择不同的配置及对应的测试数据3.抽取公共方法避免冗余代码4.场景化的用例实现可配置化5.数据驱动。一、问题在做自动化的过程中不能只考虑单接口的脚本也要考虑场景化的用例。场景化的用例 不需要每个步骤都去校验所有的数据可能 更多看重串联后的最终效果。那什么是场景用例其实就是多个接口组成的业务场景常规写代码的做法是先调用接口1验证结果 再调用接口2再继续接口3… 等等在测试场景中可能只是各个接口的入参不一样或者是调用的接口不一样。这样代码写起来就会冗余。比如def test_01(self): # step 01 result1 PackDemo().getTest() assert result1 4 # step02 result2 PackDemo2().getTest2(name) assert result2 name # step03 result3 DemoApi().getTest() assert result3 2这样的用例对于简单的接口没什么问题但是对于复杂的接口校验逻辑比较多或者入参比较多实现的方式就过于单一了。且不同场景的话每个都要更改调用的步骤和返回值场景越多冗余越多。如果使用配置化的方式每次从配置文件中动态加载配置的场景用例 而且能够做到加载后做对应的断言那该多好。怎么做呢咱们看看一些核心的实现。二、方案2.1 项目结构项目结构如下img采用当前比较流行的 Python Pytest Allure 来实现具体结构不做展开。2.2 场景用例的配置数据test_scenario.json { test_01: { step_1: { ---- 步骤节点名称可自定义 packagePath: api, --- 这个步骤要运行的方法所属类的包路径 class: DemoApi, --- 这个步骤要运行的方法所属类名称 method: getTest, --- 这个步骤要运行的方法名称 request: null, ---这个步骤运行的方法入参 response: 2, ---这个步骤运行的结果可以是一个值或者对象 verify: { --- 数据校验的节点 type: 1, ---数据校验的类型 keys: null ---如果是校验的特定字段这里需要输入部分校验的字段 } }, step_2: { packagePath: api.demo, class: PackDemo, method: getTest2, request: request - name, response: 6, verify: { type: 1, keys: null } }, step_3: { packagePath: api.demo, class: PackDemo2, method: getTest3, request: { name: param-name, num_list: [a, b, c] }, response: 8, verify: { type: 1, keys: null } } } }2.3 动态加载类在我们配置了以上的测试场景的数据后我们希望在用例执行的过程中通过获取我们的配置能够动态的加载数据文件中提到的方法并执行对应的方法那这个过程的实现我们主要通过如下的动态加载类来实现。# DynamicLoad.py # 部分主要的摘录如下 def __load_module(self): 加载对应路径下的模块 :param package_path: 包路径 :param class_name: 类名称 :return: return importlib.import_module(. self.class_name, packageself.package_path) def __getClassInstance(self): 加载对应的模块下的类并返回对应类的实例 :param module_name: 对应的模块 :param class_name: :return: self.my_module self.__load_module() self.my_class getattr(self.my_module, self.class_name)() return self.my_class def execMethod(self, method, *args): 加载对应类下的方法 :param instance: 对应的实例 :param method: 要执行的方法 :return: result getattr(self.__getClassInstance(), method)(*args) return result有了以上动态加载的方法后在执行场景用例时依据上述的方法就可以执行测试文件中提到的方法。2.4 场景分析类在场景用例的测试数据中除了需要解析需要执行的类、方法外还要解析文件中涉及到的出入参及数据比对方式因此这里还需要一个场景分析类来解析数据文件中关于具体执行过程的配置。#ScenariosAnalyze.py def analyse_exe_scenario(self, case_data): step_result {} summary True for i in case_data: instance DynamicLoad(case_data[i][packagePath], case_data[i][class]) if case_data[i][request] is not None: result instance.execMethod(case_data[i][method], case_data[i][request]) else: result instance.execMethod(case_data[i][method]) if case_data[i][verify] is not None: compare_type case_data[i][verify][type] keys case_data[i][verify][keys] step_compare_result DataCompare().compare_type(compare_typecompare_type, actualresult, expectcase_data[i][response], keyskeys) if not step_compare_result: summary False step_result[i] step_compare_result step_result[summary] summary return step_result2.5 用例实现File : test_scenario.py class TestScenario: allure.story(场景用例01) allure.severity(allure.severity_level.BLOCKER) pytest.mark.smoke def test_01(self): result None case_data self.test_data_json[test_01] result self.scenario_analyze.analyse_exe_scenario(case_data) assert result[summary] is True通过上述简单的脚本调用就可以完成一个场景用例的测试了。三、小结以上就是场景用例配置化的实现思路。它的优点是1.配置化 一切固定不变的内容全部配置化最终达到一个环境配置文件一套脚本几套测试数据依据环境的不同选择不同的测试数据执行对应的测试脚本2.门槛低因为配置化测试同学只要把测试数据文件中的关键节点配置好然后在脚本中写下调用方法就完成用例编写了3.好扩展在后续的实现中可以将这些配置全部页面化包括环境、数据、脚本达到无代码开发的目的缺点当然是不够灵活所以没有完美的方案只有合适的以上仅供大家参考。最后感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

长沙做企业网站推广的公司佛山网站制作网页制作

FaceFusion与Zoom集成概念验证:会议中实时变脸可行吗? 在远程办公已成为常态的今天,我们每天打开摄像头参加视频会议时,是否曾想过——我必须以“真实”的面孔出现吗?有人担心隐私泄露,有人厌倦了镜头前的形…

张小明 2026/1/8 7:35:50 网站建设

河南科技园网站建设最专业的手机网站制作

SSH端口转发与Miniconda-Python3.11构建安全高效的远程AI开发环境 在高校实验室、AI初创公司或远程办公场景中,开发者常常面临一个令人头疼的问题:手握强大的GPU服务器,却因为企业或校园防火墙的限制,无法顺畅访问Jupyter Noteboo…

张小明 2026/1/8 7:35:51 网站建设

开发区网站制作公司网站建设公司科技寡头正在垄断世界

基于Spring MVC与AngularJS的API接口管理系统设计与实现 基于Spring MVC与AngularJS的API接口管理系统:毕业设计优质资源详解 在当今快速发展的软件开发领域,API(应用程序编程接口)已成为系统集成和数据交换的核心组件。随着微服…

张小明 2026/1/8 7:35:53 网站建设

做网站优化竞价区别锦绣大地seo官网

EmotiVoice与Unity引擎结合:游戏语音实时生成 在现代游戏开发中,NPC的“说话”早已不再是简单的音效播放。玩家期待的是能感知情绪、回应情境、甚至带有个性色彩的对话体验。然而,传统预录音频的局限性显而易见——重复感强、缺乏变化、制作…

张小明 2026/1/9 8:24:53 网站建设

网站建设发展现状网站平台方案设计

学长亲荐9个AI论文工具,自考本科论文写作必备! 自考论文写作的“秘密武器”你找到了吗? 对于正在备战自考本科的同学们来说,论文写作无疑是一道重要的关卡。无论是选题、查资料还是撰写初稿,每一个环节都可能让人感到…

张小明 2026/1/8 7:35:52 网站建设