request 是 pytest 的内置 fixture , “为请求对象提供对请求测试上下文的访问权,并且在fixture被间接参数化的情况下具有可选的“param”属性。” 这是官方文档对request的描述,可参考的文档不多。
安装allure后执行命令后报错module ‘pytest’ has no attribute ‘allure’
tep教程会随着版本更新或经验积累,持续维护在电子书中,最新的最全的内容请锁定这篇文章【最新】tep完整教程帮你突破pytest:
添加了 @pytest.fixture,如果 fixture 还想依赖其他 fixture,需要用函数传参的方式,不能用 @pytest.mark.usefixtures() 的方式,否则会不生效。
pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能
pytest是一个基于python、功能强大的测试框架,很多项目会采用该框架维护测试用例。pytest除了强大的用例发现、收集、执行和报告输出之外,还提供了丰富的函数hook可以自定义插件或者框架行为,只需在项目目录/conftest.py文件中实现对应hook名称的函数,即可完成hook函数的注册。
反射机制就是在运行时,动态的确定对象的类型,并可以通过字符串调用对象属性、方法、导入模块,是一种基于字符串的事件驱动。
宏哥之前在做接口自动化的时候,用的测试报告是HTMLTestRunner,虽说自定义模板后能满足基本诉求,但是仍显得不够档次,高端,大气,遂想用其他优秀的report框架替换之。一次偶然的机会,在一个QQ群里看到Allure的测试报告,真的是一见钟情,特别的喜欢。但是由于时间的原因就没有自己实践一下,乘着国庆假期,自己特抽时间做了一番探索。
httprunner 3.x版本是基于 pytest 的,pytest 当然是可以支持 allure 报告了 windows环境版本:
这里的main函数为从_pytest/config/__init__.py定义的全局函数--main函数
在yaml用例文件中,有些数据不是固定的,比如注册账号,我需要每次生成不一样的,那么我们可以调用自己定义的函数 pip 安装插件
在项目config目录创建conf.py文件,所有的目录配置信息写在这个文件里面。
pytest 的钩子函数有很多,通过钩子函数的学习可以了解到pytest在执行用例的每个阶段做什么事情,也方便后续对pytest二次开发学习。 详细文档可以查看pytest官方文档https://docs.pytest.org/en/latest/reference.html#hooks
关于测试框架的好处,比如快速回归提高测试效率,提高测试覆盖率等这里就不讨论了。这里主要讨论自动化框架包含哪些内容,以及如何去设计一个测试框架。
There are lots of cool testing frameworks for different programming languages. Unfortunately only a few of them can provide good representation of test execution output. The Qameta Software testing team is working on Allure - an open-source framework designed to create test execution reports that are clear to everyone in the team.
固件的名称默认为定义时的函数名,如果不想使用默认,可以通过 name 选项指定名称:
pytest 提供了一个收集用例的钩子,在用例收集阶段,默认会查找test_.py 文件或者 _test.py文件。 如果我们想运行一个非python的文件,比如用yaml 文件写用例,那么就需要改变用例的收集规则。 以最新版pytest 7.2.0版本为例
一个yaml 文件中可以写多个用例,yaml 文件相当于py模块,每个用例相当于模块里面定义 pytest 的一个函数, 用例名称最好是test开头,如果不是test开头,也会帮你自动拼接成test开头的
预览项目:https://github.com/dongfanger/tep-template.git
『 tep is a testing tool to help you write pytest more easily. Try Easy Pytest! 』
设计软件时,我们通常要花费很多精力编写高质量代码。但这还不够,一个好的软件还应关注它的生态系统,例如测试,部署,网络等,这其中最重要的一方面就是配置管理。
pytest 自动捕获级别为 WARNING 或以上的日志消息,并以与捕获的 stdout 和 stderr 相同的方式在每个失败测试的各自部分中显示它们。
之前写了个pytest的allure相关的教程,只是停留在环境搭建完成,后续一直没用,小编一直不喜欢这种花里胡哨的报告。 没办法,领导就喜欢这种,小伙伴们也喜欢,所以还是得把allure用起来,年底了,给领导一个漂亮的报告,也好加鸡腿 之前用的是pytest-allure-adaptor插件,一年多前写的了,很古老了,跟不上时代了,不能吸引当代的小青年,这里用最新的allure-pytest,符合当代小青年的口味。
在PyCharm中打开examples/httpbin/basic_test.py:
pytest是一个测试框架,功能与unittest类似,完全兼容unittest的功能。一般做接口测试的时候,以前用的多的是python+requests+httptestrunner完成接口自动化测试与报告生成,看到现在很多都在用pytest框架,我也来学习一下,接口测试中pytest应用广泛的是通过python+pytest+allure生成测试报告,报告格式比较美观。
在上篇文章中,我们介绍了 Nebula Graph 的集成测试的演进过程。本篇就介绍一下向测试集合中添加一个用例,并成功运行所有的测试用例的过程。
tep是一款测试工具,在pytest测试框架基础上集成了第三方包,提供项目脚手架,帮助以写Python代码方式,快速实现自动化项目落地。fixture是pytest核心技术,本文聊聊如何使用fixture完成变量、接口、用例3个级别复用。
Pytest 支持通过配置的方式修改日志格式,查看 pytest 帮助命令即可查看支持的配置参数。 其中与日志相关的配置有以下几项:
在pytest中,有时候我们并不需要对所有的用例全部执行。pytest提供了一种机制:有选择的挑选用例去执行,即标记测试函数。下面详细介绍几种方法给函数标记。
有一些小伙伴一直想改变pytest用例的执行顺序,实际上我们在用例设计原则上用例就不要有依赖顺序。 pytest默认执行用例是先根据项目下的文件夹名称按ascii码去收集的,module里面的用例是从上往下执行的. pytest_collection_modifyitems 这个钩子函数顾名思义就是改变用例的执行顺序。
什么是元数据?元数据是关于数据的描述,存储着关于数据的信息,为人们更方便地检索信息提供了帮助。 pytest 框架里面的元数据可以使用 pytest-metadata 插件实现。文档地址https://pypi.org/project/pytest-metadata/
使用命令行执行pytest用例的时候,会在 terminal 终端打印整个用例的测试结果:
前面讲 request 是pytest的一个内置 fixture ,作用是获取测试的上下文,可以通过request.config 获取配置对象。 pytestconfig 的作用跟 request.config 是一样的,都是获取配置对象
unittest和pytest是Python的2个强大的测试框架,经常用来做UI自动化或接口自动化。unittest是PyCharm的默认集成工具,也是我们大多数人入门自动化的首选框架。pytest提供了更丰富的功能,相对的上手难度也要高一点。如果学了pytest后,想快速用pytest写项目,用于工作实践,那么可以试试我写的这款测试工具:tep,try easy pytest。
2、掌握raise和assert语句,会抛出自定义的异常,掌握with和as环境安装器的使用。
pytest_report_teststatus(report, config) 钩子函数返回结果类别,状态报告的短字母和详细单词。
用例之间不应相互依赖,如果部分用例拥有相同的业务流程,如都需要,打开登录页->登录->点击添加商品菜单->进入添加商品页面 不建议使用以下方式,并使其按顺序执行。
在上一篇文章《Pytest fixture及conftest详解》中,我们介绍了fixture的一些关键特性、用法、作用域、参数等,本篇文章将结合fixture及conftest实现一键动态切换自动化测试环境。在开始前,我们可以先思考几个问题:动态切换测试环境的目的是什么(能够解决什么问题)?该如何实现(实现方案)?具体步骤是什么(实现过程)?
本篇内容为学习七月大佬开源框架PytestAutoApi记录的相关知识点,供大家学习探讨
随着项目逐步迭代,自动化覆盖率提升,自动化测试的脚本会变得越来越复杂,我们需要在脚本中引入版本控制。
如果使用方只用把插件加到依赖里,安装以后这个插件就自动生效了,那使用方岂不是非常方便?但 Python 是个运行时的动态语言,所有代码需要生效都要实际执行它,那么这个执行时谁来做,什么时机执行呢?
python -m pytest –alluredir=[allure的xml目录]
logging.config.dictConfig(config)函数内部调用了DictConfigurator(config).configure(),而configure函数内DictConfigurator部,根据incremental,handlers等当前日志配置,被执行的分支代码中,会调用
tep此次更新,旨在从“工具”升级为“框架”,为此做了大量的代码整洁工作,重新设计了部分功能,项目脚手架也焕然一新。
上一篇通过用例收集钩子 pytest_collect_file 把 yaml 文件收集起来的,仅仅只是收集到用例,还不能执行。 接下来详细讲解,如何把yaml 文件的内容,转成Item 用例去执行。
领取专属 10元无门槛券
手把手带您无忧上云