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

西安企业网站建设代理机构网站建设专题

西安企业网站建设代理机构,网站建设专题,怎么样在网站做产品推广,网站开发类论文这篇文章主要为大家详细介绍了pytest如何利用request fixture实现个性化测试需求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下− 前言 在深入理解 pytest-repeat 插件的工作原理这篇文章中#xff0c;我们看到pytest_repeat源码中有这样一段 import pyt… 这篇文章主要为大家详细介绍了pytest如何利用request fixture实现个性化测试需求,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下− 前言 在深入理解 pytest-repeat 插件的工作原理这篇文章中我们看到pytest_repeat源码中有这样一段 import pytestpytest.fixture def my_fixture(request):node request.nodeprint(fCurrent test case: {node.name})print(fTest file path: {node.fspath})print(fTest class: {node.getparent})def test_demo(my_fixture):pass看到参数为request我们知道fixture装饰的函数入参只能是其他fixture所以这里request一定也是fixture。那它到底怎么用呢这篇文章将详细介绍并通过实战项目加深理解。 request fixture The request fixture is a special fixture providing information of the requesting test function.这是pytest官方文档的介绍意思就是请求fixture是一个特殊的fixture提供请求测试函数的信息。 request.node 当前测试用例的节点对象表示当前执行的测试用例。可以使用该对象获取测试用例的名称、文件路径、测试类等信息。 import pytestpytest.fixture def my_fixture(request):node request.nodeprint(fCurrent test case: {node.name})print(fTest file path: {node.fspath})print(fTest class: {node.getparent})def test_demo(my_fixture):pass输出结果为 Current test case: test_demo Test file path: /Users/pxl/test_dir/test_demo.py Test class: bound method Node.getparent of fixture 使用了 request 参数并通过 request.node 获取了当前测试用例的相关信息。具体来说我们打印了当前测试用例的名称、文件路径和测试类名称。 request.config 前运行的配置对象表示当前 Pytest 的配置信息。可以使用该对象获取命令行参数、配置文件设置等信息。 pytest.ini [pytest] markers p0: 冒烟p1: 功能 pytest.fixture def my_fixture(request):config request.configprint(fCommand line arguments: {config.option})print(fINI file options: {config.getini(markers)})该 fixture 使用了 request 参数并通过 request.config 获取了当前 Pytest 的配置信息。具体来说我们打印了命令行参数和配置文件中的一个选项。 request.param 当前 fixture 的参数表示当前 fixture 的实例所需的参数值 pytest.fixture(params[1, 2, 3]) def my_fixture(request):param_value request.paramprint(fCurrent parameter value: {param_value})return param_value该 fixture 使用了 request 参数并通过 request.param 获取了当前实例所需的参数值。 request.fixturename 返回当前 fixture 的名称。 pytest.fixture def my_fixture(request):fixture_name request.fixturenameprint(fCurrent fixture name: {fixture_name})我们使用 request.fixturename 获取了当前 fixture 的名称并将其打印出来. request.fixturenames 返回当前测试函数所使用的所有 fixture 的名称列表 pytest.fixture def my_fixture(request):passdef test_example(my_fixture, request):fixture_names request.fixturenamesprint(fCurrent fixture name: {fixture_names})我们使用 request.fixturename s获取了test_example使用的所有 fixture 的名称 request.cls 当前测试类的类对象。 class TestClass:pytest.fixturedef my_fixture(self, request):class_obj request.clsprint(fCurrent class object: {class_obj})使用 request.cls 获取了当前测试类的类对象并将其打印出来。 request.addfinalizer(finalizer_func) 在 fixture 完成后执行指定的函数。 pytest.fixture def my_fixture(request):def finalizer_func():print(Finalizer function called)request.addfinalizer(finalizer_func)print(Fixture setup)我们使用 request.addfinalizer() 方法注册了一个 finalizer 函数 finalizer_func。该函数将在 fixture 执行完毕后被调用并打印一条消息。 request.applymarker(marker) 为当前测试用例或 fixture 应用指定的 marker。 pytest.fixture def my_fixture(request):request.applymarker(pytest.mark.slow)我们使用 request.applymarker() 方法为当前 fixture 添加了一个 pytest.mark.slow 的标记。这个标记可以被 Pytest 识别并用于特定的测试运行策略。 request.config.getoption(name) 获取命令行选项的值。 pytest.fixture def my_fixture(request):my_option request.config.getoption(--my_option)print(fValue of --my_option: {my_option})我们使用 request.config.getoption() 方法获取了命令行选项 --my_option 的值并将其打印出来。 request.module 当前测试用例所属的模块对象 def my_fixture(request):module_obj request.moduleprint(fCurrent module object: {module_obj})我们使用 request.module 获取了当前测试用例所属的模块对象并将其打印出来 request.param_index 参数化 fixture 的参数索引 pytest.fixture(params[1, 2, 3]) def my_fixture(request):param_value request.paramparam_index request.param_indexprint(fCurrent parameter value: {param_value})print(fCurrent parameter index: {param_index})return param_value我们对带有参数的 my_fixture fixture 进行了参数化。使用 request.param_index 可以获取当前参数在参数列表中的索引并将其打印出来。 request.keywords 当前测试用例的关键字集合 pytest.fixture def my_fixture(request):keywords request.keywordsprint(fCurrent test keywords: pytest request fixture个性化测试,pytest request fixtu我们使用 request.keywords 获取了当前测试用例的关键字集合并将其打印出来 request.getfixturevalue(fixturename) 获取已注册的 fixture 对象的值 import pytestpytest.fixture def my_fixture():return Hello, Fixture!def test_example(request):fixture_value request.getfixturevalue(my_fixture)assert fixture_value Hello, Fixture!实战 到这里request fixture的常用属性和方法应该了解差不多了。更多属性和方法可以参考官方文档。 接下来我们就利用request属性实现数据库环境的切换。看实现代码 conftest.pydef pytest_addoption(parser):parser.addoption(--test, actionstore_true, helpRun tests in test mode)pytest.fixture(scopesession) def config_parser(request):class Clazz(object):config ConfigParser()config.read(config_path)section test if request.config.getoption(--test) else prodlog.info(fsection: {config.sections()})db_host config.get(section, host)db_port config.get(section, port)db_username config.get(section, username)db_password config.get(section, password)db_database config.get(section, database)api_url config.get(section, url)return Clazzpytest.fixture(scopesession) def db_connection(config_parser):db_conn MySQLDB(config_parser.db_host,int(config_parser.db_port),config_parser.db_username,config_parser.db_password,config_parser.db_database)yield db_conndb_conn.close()config_parser 是一个会话级别的 fixture它返回一个配置解析器对象。这个配置解析器对象可以读取配置文件并根据传入的命令行参数 --test 来确定读取哪个配置文件的特定部分测试环境或生产环境。具体流程如下 a. 首先在 pytest_addoption 函数中通过调用 parser.addoption() 方法来添加一个命令行选项 --test它的作用是告诉 pytest 在测试模式下运行。 b. 在 config_parser fixture 中我们首先创建了一个名为 Clazz 的类它包含了从配置文件中读取的各个配置项的值。 c. 根据传入的 --test 参数值决定使用测试环境还是生产环境的配置。如果 --test 参数被指定则使用配置文件中的 test 部分否则使用 prod 部分。 d. 通过 config.get() 方法获取具体的配置项的值例如 db_host、db_port、db_username 等。 e. 最后将 Clazz 类作为返回值供其他测试代码使用。 db_connection 是一个会话级别的 fixture它返回一个数据库连接对象。这个对象在测试期间可以被使用并在测试完成后进行关闭。具体流程如下 a. 在 db_connection fixture 中我们创建了一个 MySQLDB 对象将从 config_parser fixture 中获取的数据库连接参数传入。 b. 使用 yield 语句将数据库连接对象返回给测试代码。yield 使得这个 fixture 可以在测试期间提供数据库连接而在测试完成后继续执行下面的代码。 c. 在 yield 之后的代码将在测试完成后执行这里使用 db_conn.close() 来关闭数据库连接。 可以看到我们正是使用request.config.getoption这个方法来 获取命令行选项的值。 这段代码展示了如何使用 pytest 的 fixture 来管理测试环境和资源的初始化和清理。通过使用会话级别的 fixture可以确保在整个测试会话期间只进行一次配置解析和数据库连接操作避免重复的开销和不必要的操作。 后续 到这里我们有攻克了一个知识点request不仅介绍了它的基本用法也介绍了笔者在工作中真实使用场景。多加尝试才能印象深刻。 到此这篇关于pytest利用request fixture实现个性化测试需求详解的文章就介绍到这了。 最后 如果你想学习自动化测试那么下面这套视频应该会帮到你很多 如何逼自己1个月学完自动化测试学完即就业小白也能信手拈来拿走不谢允许白嫖.... 最后我这里给你们分享一下我所积累和整理的一些文档和学习资料有需要直接领取就可以了 以上内容对于软件测试的朋友来说应该是最全面最完整的备战仓库了为了更好地整理每个模块我也参考了很多网上的优质博文和项目力求不漏掉每一个知识点很多朋友靠着这些内容进行复习拿到了BATJ等大厂的offer这个仓库也已经帮助了很多的软件测试的学习者希望也能帮助到你。 ​​ ​​​​
http://www.yayakq.cn/news/5099/

相关文章:

  • 建设网站安全性飘雪影视在线观看免费完整
  • 课程网站建设所用技术免费稳定的云服务器
  • 园林景观设计公司做抖音推广措施河南网站seo
  • 广州网站建设加q.479185700wordpress ios
  • 猎奇网站源码上海关键词优化的技巧
  • vue做普通网站页面跳转厦门建设局地址
  • 393网站厦门自助建站
  • 网站建设与管理找工作广告策划书前言范文
  • 怎样做网站排名优化哪些网站使用wordpress
  • 做网站临沂网站建设中数据安全研究
  • 极品wordpress素材教程网站搭建wordpress面板
  • 高端品牌型 营销型网站建设消防设备网站建设
  • 营销型网站建设文章淮南网名
  • 谢岗网站仿做杭州做网站优化
  • 手机网站制作系统WordPress手机横屏显示
  • 熟练做网站需要了解什么黑龙江网站设计
  • 赣州福泰龙网站建设东莞地铁线路图
  • 企业网站建设的请示可以自己做漫画的软件
  • 织梦做的网站 xampp成都网站建设 四川冠辰
  • 郑州那个公司做网站好wordpress菜单下拉菜单
  • 微信分销小程序开发新乡百度网站优化排名
  • 还是网站好备案空壳网站
  • 融资网站建设wordpress 合同
  • 武平县天恒建设投资集团公司网站星际网络泰安网络公司
  • 广州专业做网站公司有哪些电脑优化是什么意思
  • 四川建设网站公司wordpress是不是做网页
  • 项目网站建设业务分析企业管理官网登录入口
  • 国外网站建设素材库上海做网站的公司有哪些
  • 办公室装修设计招商seo优化专员编辑
  • 招聘门户网站开发人员做做网站下载2023