当前位置: 首页 > news >正文

烟台城乡建设局官方信息网站建设一个网络交友的网站的论文

烟台城乡建设局官方信息网站,建设一个网络交友的网站的论文,男女性直接做的视频网站,网站建设wang.cd文章目录 1. 接口自动化的实现2. 知识要点及实践2.1 requests.post传递的参数本质2.2 pytest单元测试框架2.2.1 pytest框架简介2.2.2 pytest装饰器2.2.3 断言、allure测试报告2.2.4 接口关联、封装改进YAML动态传参#xff08;热加载#xff09; 2.3 pytest接口封装#xff… 文章目录 1. 接口自动化的实现2. 知识要点及实践2.1 requests.post传递的参数本质2.2 pytest单元测试框架2.2.1 pytest框架简介2.2.2 pytest装饰器2.2.3 断言、allure测试报告2.2.4 接口关联、封装改进YAML动态传参热加载 2.3 pytest接口封装统一请求封装 参考 1. 接口自动化的实现 APIApplication Programming Interface 接口自动化按照自动化的工具可分为 基于接口测试工具的接口自动化 eg1PostmanNewmangit/SvnJenkins基于Javascript语言接口自动化 Postman创建和发送 API 请求并对响应进行断言和验证。 Newman Postman 的命令行工具它允许测试人员在没有界面的情况下运行 Postman 集合。常用于在 CI/CD 流程中自动化运行 API 测试。 Git版本控制工具 JenkinsCI/CD 流程中用于自动化构建、测试和部署应用程序。可以设置定期或事件触发的构建任务将 Postman 集合和 Newman 集成到自动化测试流程中。 持续集成Continuous Integration和持续交付Continuous Delivery CI在每次代码提交时自动触发构建和测试过程CD自动将构建通过多个环境如开发、测试、预生产传递到生产环境以确保软件随时可以被部署到生产环境。 eg2JmeterAntGit/SvnJenkins基于Java和BeanShell语言接口自动化 JMeter性能测试工具可模拟多种负载和场景以测试 API 的性能和可靠性。 Ant用于自动构建和部署 Java 项目的构建工具。它可以用来执行 JMeter 测试计划并生成测试报告。 基于代码的接口自动化本质是轻量型的框架 Python为主复杂脚本比Java简单常用第三方库 Requests与 API 和网络服务的交互 PyYAML 在 Python 中解析和生成 YAML 数据。YAML 是一种轻量级的数据序列化格式常用于配置文件和数据交换。 XMLJsonYAML在作为配置文件的时候这三种格式都很常用在数据传输的时候 XML和JSON很常见, 尤其是JSON在API的开发中现在变得越来越普及从文件大小上来说, 同样的数据集。YAML文件最小, JSON次之XML最大。 pytestpytest 是 Python 中广泛使用的测试框架使编写测试用例更加便捷。 Allureallure-pytest 是 pytest 的插件用于生成详细且吸引人的测试报告与 Allure 测试报告框架集成。 logginglogging 是 Python 内置的日志模块用于记录应用程序运行时的消息方便调试和监控。 基于平台的接口自动化测试开发。 平台能够跟进产品序列 本接口自动化及pytest测试实践属于代码自动化 2. 知识要点及实践 2.1 requests.post传递的参数本质 body Response对象 2.2 pytest单元测试框架 默认测试用例规则 模块名,py文件以test_开头或者_test结尾类名必须Test开头用例名必须以test_开头 采用自动化测试(一)的Google翻译爬虫接口的一个小案例比如   测试库名test_Google_tran   测试模块名test_Tran_API.py   测试类名TestAPI   测试用例名test_post_message 2.2.1 pytest框架简介 框架作用 发现用例根据pytest框架默认的规则去发现并且加载测试用例执行用例将测试用例按照一定的顺序和条件执行并生成结果判断结果通过断言来判断实际结果和预测结果是否相同生成报告统计测试进度、耗时、通过率生成报告。 PS可以和很多工具比如seleniumappium等结合使用可以使用很多插件比如allure。 插件举例 (插件本质也是第三方库) allure-pytest生成allure报告pytest-cov用于代码覆盖率分析。生成代码覆盖率报告帮助了解测试覆盖的情况。pytest-html生成漂亮的 HTML 格式测试报告包括测试结果、用例名称、时间等信息方便查看和分享。pytest-xdist允许并行运行测试多线程加速测试过程。适用于拥有多个 CPU 核心的机器。pytest-ordering标记测试用例的执行顺序pytest-selenium支持使用 Selenium 进行 Web UI 测试。pytest-returnfailers失败用例重跑pytest-base-url管理基础路径 框架结构命名规则影响到框架检索 LearningAutoTesting/    |- common/ --封装库名    |    |- api.py    |    |- …    |- testcase/ --测试库名    |    |- test_api.py --测试模块名    |    |- …    |- run.py --测试用例运行    |- conftest.py --全局测试配置    |- requirements.txt --依赖名 用例的执行 可以直接运行run.pypytest.main([‘–capturesys’]) 可以在LearningAutoTesting路径下用命令行pytest -vs 注意pytest.ini配置文件框架会自动检索并用于配置pytest 运行测试时的一些参数和选项。pytest.ini 文件为整个项目设置一致的默认配置提高了可维护性和可读性。下面是配置文件常用内容举例 执行测试用例前后的操作 方法一同unittest   在 pytest 中用于在测试用例执行前后执行操作的关键字是 setup 和 teardown但是在 pytest 中更推荐使用 setup 和 teardown 的变种即 setup_method 和 teardown_method。 setup_method在每个测试方法测试用例执行前都会调用。适用于需要在每个测试之前执行初始化操作的情况。 teardown_method在每个测试方法执行后都会调用。适用于需要在每个测试之后执行清理操作的情况。 setup_class 在整个测试类的生命周期中只会执行一次不同于 setup_method。 方法二采用fixture固件灵活设置方法的前后操作。 Python 中的装饰器是一种特殊的语法和功能用于修改或增强函数或类的行为。装饰器可以在不修改原始函数或类代码的情况下对它们进行功能性的扩展、修改或包装。装饰器通常是函数它接受一个函数或类作为参数并返回一个新的函数或类。 def count_calls(func):def wrapper(*args, **kwargs):wrapper.call_count 1print(fFunction {func.__name__} has been called {wrapper.call_count} times.)return func(*args, **kwargs)wrapper.call_count 0return wrappercount_calls def my_function():print(Hello, world!)my_function() 输出 Function my_function has been called 1 times. Hello, world! Function my_function has been called 2 times. Hello, world! pytest.fixture用于定义固件或者叫夹具fixture固件是一种可以在测试用例中重复使用的资源或数据例如数据库连接、临时文件、模拟对象等。它可以用来随心所欲的设置前后置操作。 装饰器用法调整这5个参数进行使用。作用域一般是函数级别或者会话级别。 fixture的手动调用在test_caseself固件名 其中yeild是一个生成器。可以用来传递返回值 当一个函数中包含了 yield 关键字时它就变成了一个生成器函数。生成器函数可以被调用但不会立即执行而是返回一个生成器对象。每次调用生成器对象的 next() 方法或使用 next() 函数时函数会执行直到遇到 yield然后产生一个值并暂停。下次调用时函数从上次暂停的地方继续执行直到再次遇到 yield 或函数结束。 自动调用: 如果只有autouse参数为true则同setup_作用域。 固件传参数据驱动可以通过参数化来实现一种类似于迭代的行为。当您使用 params 参数来传递多个参数时fixture 将会为每组参数运行一次测试函数并在每次测试运行时提供不同的准备工作。 2.2.2 pytest装饰器 pytest.fixture用于定义夹具fixture夹具是一种可以在测试用例中重复使用的资源或数据例如数据库连接、临时文件、模拟对象等。 对固件驱动。1. 主要用于准备测试所需的数据、对象、环境等并在测试结束后进行清理操作以确保测试之间不会相互影响。2. 通过将常见的测试准备和清理逻辑封装到 fixture 中您可以在多个测试用例中重复使用从而避免重复编写相同的代码。3. fixture 可以用于管理外部资源如数据库连接、文件句柄等以确保资源在测试完成后被释放。 pytest.mark.parametrize用于参数化测试允许你通过多个参数组合运行同一个测试用例以减少重复的测试代码。 对数据驱动pytest.mark.parametrize参数名参数值-列表或者元组数据中有多少值就会执行多少次。用于在一个测试用例中多次运行每次使用不同的参数即使用不同的输入数据运行相同的测试逻辑 pytest.mark.skip 和 pytest.mark.skipif用于跳过指定的测试用例前者是无条件跳过后者可以根据条件来决定是否跳过。 pytest.mark.xfail用于标记预期失败的测试用例即使测试用例失败了也不会导致整个测试过程失败。 pytest.mark.parametrize用于参数化测试让你可以为测试用例指定多组参数使得同一个测试用例可以多次运行。 pytest.mark.timeout用于为测试用例设置最大运行时间如果测试用例运行时间超过指定时间将会被中断。 pytest.mark.parametrize用于将标记应用于测试用例例如自定义标记用于组织测试用例。 pytest.mark.usefixtures用于在测试函数中自动使用指定的夹具不需要在参数列表中指定。 pytest.mark.filterwarnings用于过滤特定类型的警告以便在测试运行期间不显示特定的警告信息。 pytest.mark.raises用于断言某个异常被正确地引发用于测试代码中是否抛出了预期的异常。 2.2.3 断言、allure测试报告 还需要安装allure才能通过os模块调用这里仅放一个基础使用例子在该系列的后续文章**自动化测试四**中细讲。 2.2.4 接口关联、封装改进 接口关联场景在测试中一个系统通常会被分解成多个子系统或模块这些子系统之间需要通过接口进行数据传递和交互。比如test1中验证了能够获得tokenstest2需要使用test1的tokens。 方法一对于流水线测试中间数据传输比较少的话可以在 pytest 的 fixture 中使用 yield 语句来在 fixture 的生命周期内传递参数并确保 yield 生成的数据被另外一个测试用例以函数名称传输的方式捕获。 方法二用文件、数据库保存常用yaml文件。用文件或者数据库统一管理中间变量。 common\yaml_uitl.py文件 # 提前构建一个yaml文件 import yaml import osdef read_yaml(key):# 使用 with 会自动管理文件的打开和关闭with open(os.getcwd() /extract.yaml, encodingutf-8) as f:value yaml.load(streamf, Loaderyaml.FullLoader) # 自动将yaml结构体print(value)return value[key]def write_yaml(data):# 理论上还需要检测yaml中是否已经存在对应的数据如果存在需要改modewith open(os.getcwd() /extract.yaml, encodingutf-8, modea) as f:yaml.dump(data, streamf, allow_unicodeTrue)if __name__ __main__:print(read_yaml(employee))write_yaml({employer: {name: Jerry}})print(read_yaml(employer))一般在conftest文件中设置clear_yaml函数。接口关联时使用yaml_util直接写入、读取json数据即可。 YAML 文件人类易读性比Json好可以和json之间灵活转换load后就是json格式 编写配置文件测试用例接口关联 # 特殊字符可以使用单引号或双引号括起来employee:name: Markage: 28status: null # 空值可以表示为 null 或 ~projects:- Project A # - 表示列表中的元素- Project Bcontact: # 联系方式email: markexample.comphone: 123-456-7890description: | # | 表示多行字符串This is a multilinestring with preserved line breaks.employer: employer:name: JerryYAML动态传参热加载 热加载让YAML能够调用外部函数 方法${fuction_name(parms)} 2.3 pytest接口封装统一请求封装 将数量很多的用例封装为一个方法。场景 统计数据异常处理日志监控 eg1以处理数据为例将待翻译的内容封装成GoogleTranslate.py中的google_translator类。 eg2以日志监控为例封装后在SendRequest类方法中打印日志即可因为所有的用例中都会调用SendRequest类方法。同时自建的类只初始化一次session对象能够自动关联cookie所有请求都在一个通话里面而google_translator类with requests.Session() as s或者request方法源码也是先from . import sessions然后with sessions.Session() as sessioncookie都只用了一次 为什么可以requests.Session()而不需要requests.sessions.Session()   requests 库在设计时采用了适当的模块导入机制和命名空间。这样的设计使得库的使用更加便捷和一致。当你使用 import requests 导入 requests 模块时你实际上导入了 requests 包中的 init.py 模块。然后requests 包内的各个子模块和类都会在 requests 命名空间下变得可用。 参考 b站2023年课程p1-p9
http://www.huolong8.cn/news/302903/

相关文章:

  • 网上做室内设计好的网站长沙棋牌软件开发公司
  • 网站做支付接口天津星创网站建设有限公司
  • 网站制作 深圳移动端seo关键词优化
  • 山西公司怎么做网站做网站可以用微软雅黑字体么
  • 什么网站上做奥数题灯哥解析 wordpress
  • 建立网站数据库实验报告怎么运行自己做的网站
  • 红安城市建设局投诉网站安顺市哪里可以做网站
  • 网站教程设计12380举报网站制度建设
  • 设计师都上什么网站深圳市汇成品牌营销策划有限公司
  • 国外虚拟主机 两个网站怎样制定一个网站建设方案
  • 上海企业网站改版站长工具查询网站
  • 如何建立一个免费的网站八戒
  • 宿迁做网站上海网站建设定制开发
  • 怎样用模板建网站网页版梦幻西游周游方壶
  • 门户网站开发 价格人工智能搭建
  • 做淘宝客导购网站推广wordpress同步插件
  • 专门做甜点的视频网站简述网站建设优坏的评价标准
  • 附近做网站东莞市建设中心
  • php网站建设一流程百度做的网站国外可以打开吗
  • 汽车网站代码江西做网站的公司有哪些
  • 无忧建站网o2o电子商务平台有哪些
  • ai可以做网站吗学校网站建设主体
  • 邱县企业做网站推广达州市建设规划网站
  • 企业需求做网站在哪儿交易律师手机网站模板
  • 网站开发 旅游福州网络营销网站
  • 丹阳网站建设制作怎么做网站教程简单
  • 智能网站平台最火的做网站源码语言
  • 银河麒麟软件下载网站天一建设网站
  • 搬瓦工vps wordpress连云港网站推广优化
  • 淘宝网站设计模板下载深圳专门做网站的公司