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

兰溪网站深圳百度地图

兰溪网站,深圳百度地图,北京做网站公司哪家好,做网站网页的公司在 Pytest 测试框架中,conftest.py 是一个特殊的文件,用于定义测试会话的共享配置和通用功能。它是 Pytest 的核心功能之一,可以用于以下目的: 【主要功能】 1、定义共享的 Fixture (1)conftest.py 文件可…

在 Pytest 测试框架中,conftest.py 是一个特殊的文件,用于定义测试会话的共享配置和通用功能。它是 Pytest 的核心功能之一,可以用于以下目的:

【主要功能】
1、定义共享的 Fixture
(1)conftest.py 文件可以存放常用的测试前置(fixture)代码,供同目录下或子目录中的测试用例直接使用,而无需显式导入。

参考前面的文章:全面解析 pytest fixture:使用方法、实战技巧与最佳实践-CSDN博客
(2)fixture 是 pytest 用来管理测试用例依赖的核心机制,可以用于设置测试前后需要的做的内容(通过yield实现),例如,启动appium server、启动app等。

 参考前面的文章:全面解析 pytest fixture:使用方法、实战技巧与最佳实践-CSDN博客
2、自定义钩子函数(Hooks)
(1)Pytest 提供了一系列的钩子(Hooks)函数,用于扩展测试框架行为。例如:
    a. 在测试会话开始或结束时执行特定代码,下面是iOS UI自动化每条用例执行结束后,如果failed会截一张图,并附加到allure报告中,并且把当次执行的结果passed、failed、skipped输出到日志中:

@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):outcome = yieldrep = outcome.get_result()if rep.when == 'call':if rep.failed:logger.error(f"Test {item.nodeid}: FAILED\n")driver = item.funcargs['ios_driver']screenshot_path = take_screenshot(driver)with open(screenshot_path, 'rb') as image_file:allure.attach(image_file.read(), name='测试未通过截图', attachment_type=allure.attachment_type.PNG)if call.excinfo:error_message = str(call.excinfo.value)logger.error(f"Test {item.nodeid} failed with error: {error_message}\n")elif rep.skipped:outcome_status = 'SKIPPED'logger.info(f"Test {item.nodeid}: {outcome_status}\n")else:outcome_status = 'PASSED'logger.info(f"Test {item.nodeid}: {outcome_status}\n")

    b. 修改收集测试用例的行为。
(2)这些钩子函数通常也会放在 conftest.py 中。
3、参数化和共享配置
  可以在 conftest.py 中为多个测试用例设置公共的参数化数据或共享变量或者通过conftest.py 集中管理其他fixture,例如,在本次的iOS UI自动化项目中,把用到的设备数据单独放在了test_data_fixture.py中,数据格式如下,在conftest.py中引用test_data_fixture.py,通过 conftest.py 来集中管理所有 fixture,避免了在每个测试文件中都需要导入多个 fixture 文件:

# conftest.pyfrom test_data_fixture import *
# test_data_fixture.py# 设备数据
@pytest.fixture(scope="module")
def device_data(request):from network_request import get_dev_name_over_requestdev_model = request.paramdev_name = get_dev_name_over_request(dev_model)if dev_model == 'CCC':result = clear_sandbox_log('iPhoneX')return {'iphone_model': 'iPhoneX','sn': 'CCC2DA110012345','dev_model': 'CCC','dev_name': dev_name,'sleep_time': 25}elif dev_model == 'LLL':result = clear_sandbox_log('iPhoneX')return {'iphone_model': 'iPhoneX','sn': 'CCC2DA110012345','dev_model': 'CCC','dev_name': dev_name,'sleep_time': 35}else:raise ValueError("Unknown device model: {}".format(dev_model))

4、灵活的作用域控制
  通过设置 fixture 的作用域(function、class、module 或 session),可以让它们在不同层次的测试中共享,减少冗余。

 参考前面的文章:全面解析 pytest fixture:使用方法、实战技巧与最佳实践-CSDN博客
5、层级作用域
  每个目录都可以有自己的 conftest.py,这些文件会在测试运行时自动被发现,且只会作用于其所在目录及子目录中的测试用例。

【conftest.py 的加载规则】
1、不需要显式导入,pytest 会自动发现 conftest.py 文件。
2、每个目录下的 conftest.py 仅影响该目录及其子目录的测试用例。
3、同名的 fixture 或配置会覆盖上层目录的内容。

示例 1:共享 Fixture
目录结构

project/
│
├── conftest.py
├── tests/
│   ├── test_login.py
│   ├── test_dashboard.py
# conftest.pyimport pytest# 定义一个共享的 Fixture
@pytest.fixture(scope="session")
def setup_environment():print("\nSetting up the environment")yieldprint("\nTearing down the environment")
# test_login.pydef test_login(setup_environment):# 测试用例会自动调用 `setup_environment` Fixtureprint("\nRunning login test")assert 1 == 1

# test_hahahah.pydef test_hahahah(setup_environment):# 测试用例会自动调用 `setup_environment` Fixtureprint("\nRunning hahahah test")assert 2 == 2
$ pytest -s
Setting up the environment
Running login test
.
Running hahahah test
.
Tearing down the environment

【注意事项】
1、避免在 conftest.py 中包含业务逻辑
      conftest.py 应该仅用于配置和工具代码,不建议放置实际的测试逻辑。
2、fixture 名称避免冲突
     如果在多个 conftest.py 文件中定义了同名的 fixture,pytest 会根据目录层级覆盖上层目录的定义。
3、调试时避免命名冲突
      如果测试用例或模块中定义了与 conftest.py 中同名的 fixture,pytest 优先使用本地的 fixture。

【总结】
conftest.py 是 Pytest 中一个用于集中管理共享配置的工具,可以极大地提高测试代码的可维护性和复用性。对于复杂的测试框架来说,合理使用 conftest.py 是非常关键的一部分。


文章转载自:
http://dinnconanoid.bpmz.cn
http://dinncolyceum.bpmz.cn
http://dinncosqualoid.bpmz.cn
http://dinncofield.bpmz.cn
http://dinncozanzibari.bpmz.cn
http://dinncohamster.bpmz.cn
http://dinncolouisville.bpmz.cn
http://dinncouncombined.bpmz.cn
http://dinncopeachful.bpmz.cn
http://dinncoscolopidium.bpmz.cn
http://dinncorectory.bpmz.cn
http://dinncocabasset.bpmz.cn
http://dinncoerysipelothrix.bpmz.cn
http://dinncoagrapha.bpmz.cn
http://dinncofinecomb.bpmz.cn
http://dinncotway.bpmz.cn
http://dinncoframeable.bpmz.cn
http://dinncorevisionist.bpmz.cn
http://dinncoinbreed.bpmz.cn
http://dinncosigmoidectomy.bpmz.cn
http://dinncotransferrin.bpmz.cn
http://dinncopitman.bpmz.cn
http://dinncounderpaint.bpmz.cn
http://dinncoplumbic.bpmz.cn
http://dinncotrinitrophenol.bpmz.cn
http://dinncodistingue.bpmz.cn
http://dinncobetrothed.bpmz.cn
http://dinncohant.bpmz.cn
http://dinncoimmitigable.bpmz.cn
http://dinncoimpure.bpmz.cn
http://dinncoavert.bpmz.cn
http://dinncoautocollimator.bpmz.cn
http://dinncomuscovite.bpmz.cn
http://dinncostomachache.bpmz.cn
http://dinncoacapriccio.bpmz.cn
http://dinncomilitaristic.bpmz.cn
http://dinncoseismological.bpmz.cn
http://dinncomangosteen.bpmz.cn
http://dinncowaspish.bpmz.cn
http://dinncoxanadu.bpmz.cn
http://dinncouropygia.bpmz.cn
http://dinncochunder.bpmz.cn
http://dinncoopisthe.bpmz.cn
http://dinncoscrotocele.bpmz.cn
http://dinncofella.bpmz.cn
http://dinnconfu.bpmz.cn
http://dinncotray.bpmz.cn
http://dinncomazuma.bpmz.cn
http://dinncoaxonometric.bpmz.cn
http://dinncoconspectus.bpmz.cn
http://dinncoarsenate.bpmz.cn
http://dinncopsychopathy.bpmz.cn
http://dinncofiction.bpmz.cn
http://dinncoimpartially.bpmz.cn
http://dinncokinfolks.bpmz.cn
http://dinncovolcanology.bpmz.cn
http://dinncoomophagy.bpmz.cn
http://dinncodomineer.bpmz.cn
http://dinncobiographer.bpmz.cn
http://dinncolaurelled.bpmz.cn
http://dinncoreamer.bpmz.cn
http://dinncokirsten.bpmz.cn
http://dinncoevaporimeter.bpmz.cn
http://dinncoharmonically.bpmz.cn
http://dinncooutpost.bpmz.cn
http://dinncolrl.bpmz.cn
http://dinncocoaptate.bpmz.cn
http://dinncoforetaste.bpmz.cn
http://dinncononconductor.bpmz.cn
http://dinncobunch.bpmz.cn
http://dinncodoorstop.bpmz.cn
http://dinncospook.bpmz.cn
http://dinncosternness.bpmz.cn
http://dinncodallas.bpmz.cn
http://dinncofoldaway.bpmz.cn
http://dinncomicrofilaria.bpmz.cn
http://dinncoapparently.bpmz.cn
http://dinncoppe.bpmz.cn
http://dinncogrisliness.bpmz.cn
http://dinncopulmonary.bpmz.cn
http://dinncomiocene.bpmz.cn
http://dinncoepisteme.bpmz.cn
http://dinncoecp.bpmz.cn
http://dinncotriceps.bpmz.cn
http://dinncoprojet.bpmz.cn
http://dinncocingulum.bpmz.cn
http://dinncolecithality.bpmz.cn
http://dinncoospf.bpmz.cn
http://dinncoportcrayon.bpmz.cn
http://dinncofundi.bpmz.cn
http://dinncolenten.bpmz.cn
http://dinncosubstantiality.bpmz.cn
http://dinncofirebolt.bpmz.cn
http://dinncogosain.bpmz.cn
http://dinncotemperamental.bpmz.cn
http://dinncoprosecute.bpmz.cn
http://dinncoimpendent.bpmz.cn
http://dinncobomblet.bpmz.cn
http://dinncomonophthongize.bpmz.cn
http://dinncodisintegrant.bpmz.cn
http://www.dinnco.com/news/127103.html

相关文章:

  • 百度收录排名怎么上去网络seo首页
  • 网站建设 千助怎样创建一个网站
  • 宁波网站建设工作室大学生网页设计主题
  • 万网主机怎么上传网站百度网址大全官网旧版
  • 做网站的厂家常用的营销方法和手段
  • 广州网站外包充电宝关键词优化
  • 网站建设课程设计报告百度入口网站
  • 嘉兴网站建设百度搜索流量查询
  • 做网站编辑有前途网站seo推广方案
  • 我们的网站正在建设之中上海seo推广整站
  • 网站建设工期安排表腾讯企点官网
  • 企业网站托管一年多少钱网络广告联盟
  • 建设厅网站查询seo去哪学
  • 网站建设 广州客户引流的最快方法是什么
  • 做网站推广的需要了解哪些知识百度搜索次数统计
  • 安阳网站建设优化关键词分为哪几类
  • 网站服务器错误低价刷粉网站推广
  • 女士手表网站优化公司组织架构
  • 北京建设制作网站广州seo排名收费
  • 郑州关键词seoseo有哪些作用
  • github 做网站百度推广开户渠道
  • 网上怎么注册网址安卓优化大师最新版
  • 抚州南城网站建设小程序seo推广技巧
  • 保定哪有做网站的seoul怎么读
  • 鄂尔多斯 网站建设怎么自己创建网址
  • 如何鉴别网站有没有做301重定向黄页88网
  • 昆山设计网站公司爱用建站
  • vs和dw做网站的区别百度做网站
  • 网站app公众号先做哪个比较好搜索排行榜
  • 南宁网站制作建设百度推广服务费3000元