目前最火的测试框架,pytest封神级讲解

这篇具有很好参考价值的文章主要介绍了目前最火的测试框架,pytest封神级讲解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Pytest 是 python2 自带的自动化测试框架,python3 的版本的话 pytest 框架独立出来,需要 pip 进行安装

一、Pytest 的下载安装

1、Python3 使用 pip install -U pytest 安装

2、查看 pytest 版本信息 pytest --version

3、pytest 用例的执行规则:

①测试文件以 test_xx.py 命名需要以 test_开头(或_test 结尾)

②测试类以 Test_开头,并且不能带有 init 方法

③测试函数或方法以 test_xx 开头总体上分为三个阶段:

1、编写测试用例

2、执行测试用例

3、输出测试报告

第一步:编写测试用例

pytest 执行时默认是执行指定路径下以test_开头或者以_test 结尾的文件里的测试类或者方法,默认是执行以 Test_开头的类和 test_开头的方法

1、首先创建 py 文件命名以 test_开始或者以_test 结尾

2、若是新建类,测试类需要以 Test_开头

3、测试用例(方法)需要以 test_开头

目前最火的测试框架,pytest封神级讲解

1.1 测试用例的优化

1.1.1 assert 断言(判断执行结果是否满足预期):

Pytest 最常用的断言一般有以下五种:

assert xx:判断 xx 为真assert not xx:判断 xx 不为真assert a in b:判断 b 包含 a assert a == b:判断 a 等于 b assert a !=b:判断 a 不等于 b

添加断言在对应的方法里面,做判断测试用例结果是否满足预期,示例如下:

目前最火的测试框架,pytest封神级讲解

执行结果如下:断言失败的结果会显示出来

1.1.2 断言优化

如果想要在失败的时候看到更详细的信息,可以在断言上添加说明,示例如下:

执行结果如下图,可以看到失败时断言的说明信息

目前最火的测试框架,pytest封神级讲解

第二步、测试用例的执行

2.1 使用命令行执行

cmd 窗口,然后执行 pytest 文件路径/测试文件名例如 pytest ./test_tt.py

如果当前路径已经是放测试用例文件的文件夹下,想要测试文件,则直接可以 输入pytest 测试文件名 即可:

目前最火的测试框架,pytest封神级讲解

如果只输入 pytest,则会默认执行当前文件夹下所有以 test_开头(或_test 结尾)的文件。

2.2 IDE(PyChram)执行

写法如截图所示,pytest.main()(参数以列表的形式给出,如截图)

执行当前文件所在路径下的文件,指定文件名则执行指定的文件,若没指定,执行所有 test_

开头或者_test 结尾的文件。

目前最火的测试框架,pytest封神级讲解

2.3 执行指定文件指定方法

2.3.1 命令行编写方式

pytest路径/文件名::类名::方法名例如

目前最火的测试框架,pytest封神级讲解

2.3.2 pycharm 编写方式

如果是用 pycharm 写法如图,与上面的命令行等价:

目前最火的测试框架,pytest封神级讲解

2.4 带参数执行

常用的 pytest 带参数执行:列举几种,其余扩展可以自行百度

2.4.1 pytest -q简化控制台的输出

不带参数执行结果:

目前最火的测试框架,pytest封神级讲解

带参数执行结果:

目前最火的测试框架,pytest封神级讲解

2.4.2 Pytest -v 输出用例更加详细的执行信息,比如用例所在文件和用例名称

添加参数前执行结果:

目前最火的测试框架,pytest封神级讲解

添加参数后执行结果:

目前最火的测试框架,pytest封神级讲解

2.4.3 pytest -k 执行用例中包含‘关键字’的用例

待执行用例如截图所示:

目前最火的测试框架,pytest封神级讲解

执行代码和结果如图:(关键字需要用双引号)

目前最火的测试框架,pytest封神级讲解

2.4.4 pytest -s 输出用例中的调试信息,比如 print 打印信息,如果不加参数则不输出
待执行的用例:

目前最火的测试框架,pytest封神级讲解

添加参数前执行结果:

目前最火的测试框架,pytest封神级讲解

添加参数后执行结果:

目前最火的测试框架,pytest封神级讲解

2.4.5 pytest -m执行‘标记’的内容,执行特定的测试用例,执行有相同标记的测试用例,添加标记的方法如下:

需执行测试用例:

目前最火的测试框架,pytest封神级讲解

执行代码和结果如下:

目前最火的测试框架,pytest封神级讲解

执行有相同标记的用例,可以用于指定需执行的测试用例。

2.4.6 pytest -x执行失败则停止执行,后面的用例不会被执行

待执行用例:

目前最火的测试框架,pytest封神级讲解

带参数执行结果:

目前最火的测试框架,pytest封神级讲解

2.4.7 pytest --maxfail=n执行失败 n 次之后停止执行,n 是执行失败的次数

假设 n = 2 执行上面的用例:由于失败只有一次所以用例会继续执行完,直到两次失败才停止执行

目前最火的测试框架,pytest封神级讲解

2.4.8 pytest --count=n 执行用例 n 次,n=2 就是执行两次

如下执行 test_01 两次:

目前最火的测试框架,pytest封神级讲解

2.4.9 pytest --lf (last failed)重新运行上次失败的用例,若没有失败的会全部跑

目前最火的测试框架,pytest封神级讲解

2.4.10 pytest --ff (failed first)重新运行所有用例,但首先运行上次失败的用例

目前最火的测试框架,pytest封神级讲解

2.5 优质功能介绍

2.5.1 跳过用例的执行

根据特定的条件,不执行标识的测试函数. 方法:

skipif(condition, reason=None) 参数:

condition:跳过的条件,必传参数reason:标注原因,必传参数

使用方法:

@pytest.mark.skipif(condition, reason=“xxx”) condition 条件为真时跳过

@pytest.mark.skip()

示例如下:

目前最火的测试框架,pytest封神级讲解

2.5.2 标记为预期失败的用例

标记测试函数为失败函数

方法:

xfail(condition=None, reason=None, raises=None, run=True, strict=False)

常用参数:

condition:预期失败的条件,必传参数reason:失败的原因,必传参数

使用方法:

@pytest.mark.xfail(condition, reason=“xx”)condition 为真则标记失败

在某种条件不满足的时候, 预期它是失败的, 就将它标记为预期失败, 若

condition 条件不满足则正常执行

示例:

不带参数:

目前最火的测试框架,pytest封神级讲解

condition 条件满足的时候:

目前最火的测试框架,pytest封神级讲解

condition 条件不满足的时候:

目前最火的测试框架,pytest封神级讲解

2.5.3 参数化

方法:

parametrize(argnames, argvalues, indirect=False, ids=None, scope=None)

常用参数:

argnames:参数名

argvalues:参数对应值,类型必须为 list 当参数为一个时格式:[value]

当 参 数 个 数 大 于 一 个 时 , 格 式 为 : [(param_value1,param_value2…),(param_value1,param_value2 )]

使用方法:

@pytest.mark.parametrize(argnames,argvalues) 参数名,参数值@pytest.mark.parametrize(“a”,[3,6])单参数@pytest.mark.parametrize(“a,b”,[(1,2),(0,3)])多参数

参数值为 N 个,测试方法就会运行 N 次

示例:

单参数:

目前最火的测试框架,pytest封神级讲解

多参数:

目前最火的测试框架,pytest封神级讲解

2.5.4 执行标记的用例多次

首先安装 repeat:

pip install pytest-repeat

@pytest.mark.repeat(n)执行当前用例 n 次 然后再往下执行其他用例

示例:

目前最火的测试框架,pytest封神级讲解

2.5.5 调整用例的执行顺序

使用:

安 装 pip install pytest-ordering 在测试方法上加装饰器@pytest.mark.last–最后一个执行

@pytest.mark.run(order=1)—第几个执行

示例:

最后一个执行:

目前最火的测试框架,pytest封神级讲解

指定执行顺序:

目前最火的测试框架,pytest封神级讲解

2.5.6 自定义测试用例预置条件–pytest 精髓fixture

@pytest.fixture()(scope=“function”,params=None,autouse=False, ids=None, name=None)

调用时被优先执行 预处理或者重复操作scope:被标记方法的作用域

function" (default):作用于每个测试方法,每个 test 都运行一次

“class”:作用于整个类,每个 class 的所有 test 只运行一次

“module”:作用于整个模块,每个 module 的所有 test 只运行一次

"session:作用于整个 session(慎用),每个 session 只运行一次

params:(list 类型)提供参数数据,供调用标记方法的函数使用

autouse:是否自动运行,默认为 False 不运行,设置为 True 自动运行

若不为 True 则需要调用才会优先执行。

2.5.6.1 fixture 用法一

定义 fixture 与定义普通函数差不多,命名不要以 test 开头与用例区分开,fixture 有返回值, 没有返回值默认为 None。用例调用 fixture 返回值,直接就是把 fixture 的函数名称当做变量名称。

示例:

会优先于测试用例 test_01 执行

目前最火的测试框架,pytest封神级讲解

2.5.6.2 fixture 用法二

fixture 标记的函数可以应用于测试类外部,每次都会优先执行

目前最火的测试框架,pytest封神级讲解

2.5.6.3 fixture 用法三

传参数作为标识

目前最火的测试框架,pytest封神级讲解

2.5.6.4 使用多个fixture

如果用例需要用到多个fixture 的返回数据,fixture 也可以返回一个元组,list或字典,然后从里面取出对应数据。

目前最火的测试框架,pytest封神级讲解

也可以分成多个 fixture 在用例中传值多个 fixture 参数

2.5.6.5 fixture 作用范围

2.5.6.5.1 、function 每个方法执行之前执行一次

目前最火的测试框架,pytest封神级讲解

2.5.6.5.2 class 类执行开始时执行一次

目前最火的测试框架,pytest封神级讲解

2.5.6.5.3 module 在当前.py 脚本里面所有用例开始前只执行一次

目前最火的测试框架,pytest封神级讲解

2.5.6.5.4 session 级别是可以跨.py 模块调用的

也就是当我们有多个.py 文件的用例的时候, 如果多个用例只需调用一次fixture,那就可以设置为 scope=“session”。

2.5.6.5.5 conftest.py 文件

新建 conftest.py 文件,名称固定,与运行的用例在同一个 package 下面,不用导入 pytest 会自动查找,文件里面可以单独管理一些预置的操作场景,在执行用例的时候就会预置执行。示例:

目前最火的测试框架,pytest封神级讲解

第三步、 生成测试报告

想要生成测试报告,需要先安装 pytest-html 安装命令

pip install pytest-html

3.1 使用命令行生成报告

目前最火的测试框架,pytest封神级讲解

–html=路径/文件名.html 不写路径就默认为当前路径

3.2 使用 PyCharm 生成报告

目前最火的测试框架,pytest封神级讲解

生成的报告大概是这样的:

目前最火的测试框架,pytest封神级讲解

3.3 高大上的测试报告

想要生成高大上的测试报告自行百度 Pytest+Allure,可以集成到 Jenkins,自动生成高大上的自动化测试报告,效果图大概是这样的:

目前最火的测试框架,pytest封神级讲解

3.4 生成 xml 报告

–junit-xml=路径/文件名.xml

目前最火的测试框架,pytest封神级讲解

目前最火的测试框架,pytest封神级讲解

效果大概是这样的:

目前最火的测试框架,pytest封神级讲解

扩展

输出覆盖率报告
pytest 可以输出覆盖率的 html 报告使用命令如下:

pytest -vv --cov=./ --cov-report=html 有可能遇到报错:

pytest: error: unrecognized arguments: --cov-report=html

? inifile: None

? rootdir: /Users/joe/workspace/platform/mgap-mendel/mgap-mendel 原因:

缺少 pytest cov 的包

解决方法

pip install pytest-cov 大概是这样的:

目前最火的测试框架,pytest封神级讲解

设置重复执行的执行范围

–repeat-scope

–repeat-scope 类似于 pytest fixture 的 scope 参数,–repeat-scope 也可以设置参数:session , module,class 或者 function

function 范围针对每个用例重复执行,再执行下一个用例

class 以 class 为用例集合单位,重复执行 class 里面的用例,再执行下一个module 以模块为单位,重复执行模块里面的用例,再执行下一个

session 重复整个测试会话,即所有收集的测试执行一次,然后所有这些测试再次执行等等

示例:如下 scope=function --count=2 以用例为单位执行

执行每个用例两次,如果是 class 则以类为单位执行,是执行类里面的用例重复执行

目前最火的测试框架,pytest封神级讲解

重复测试直到失败

将 pytest 的-x 选项与 pytest-repeat 结合使用,以强制测试运行器在第一次失败时停止。例如:

pytest --count=1000 -x test_tt.py

这样将执行 1000 次用例,直到失败就停止,执行时可以带多个参数,更多的东西需自己去探索。

配置文件

配置文件可以改变 pytest 框架的运行规则,比如可以改变 pytest 收集用例的规则,添加命令参数。

如下配置 addopts = -s --html=./report.html 执行 pytest 时就能自动生成报告修改

python_files = test_.py python_classes = Test_ python_functions = test_*

内容就可以改变 pytest 收集用例的规则,比如修改 python_files = test_.py check_.py则执行 pytest 时以 check_*.py 开头的文件也可以自动执行。

目前最火的测试框架,pytest封神级讲解

使用配置文件的方法,在项目根目录下新建 pytest.ini 文件,然后自行配置参数,常用的如下:

[pytest]

命令行参数addopts = -s # 搜索文件名

python_files = test_.py # 搜索的类名python_classes = Test_ #搜索的函数名

python_functions = test_*

setup 与 teardown 函数

Pytest 是 unittest 的扩展,也可以实现 setup(开始时执行一次)和 teardown

(结束时执行一次)简单提及,详细内容可自行百度。

Pytest 支持 setup/teardown,但是更推荐使用 pytest.fixture

最后: 可以在公众号:伤心的辣条 ! 自行领取一份216页软件测试工程师面试宝典文档资料【免费的】。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

现在我邀请你进入我们的软件测试学习交流群:746506216】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。

喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!

软件测试工程师自学教程:

这才是2022最精细的自动化测试自学教程,我把它刷了无数遍才上岸字节跳动,做到涨薪20K【值得自学软件测试的人刷】

接口性能测试 — 软件测试人必会618实战场景分析

软件测试工程师月薪2W以上薪资必学技能 — Python接口自动化框架封装.

美团面试真题_高级测试25K岗位面试 — 软件测试人都应该看看

测试开发之全面剖析自动化测试平台 — 软件测试人的必经之路

软件测试必会_Jmeter大厂实战 — 仅6步可实现接口自动化测试

Jmeter实战讲解案例 — 软件测试人必会文章来源地址https://www.toymoban.com/news/detail-417551.html

到了这里,关于目前最火的测试框架,pytest封神级讲解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Pytest单元测试框架 —— Pytest+Allure+Jenkins的应用

    一、简介 pytest+allure+jenkins进行接口测试、生成测试报告、结合jenkins进行集成。 pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高 allure-pytest是python的一个第三方库。用于连接pytest和allure,使它们可以配合在一起

    2024年02月07日
    浏览(59)
  • 测试框架pytest教程(6)钩子函数hook开发pytest插件

    pytest hook 函数也叫钩子函数,pytest 提供了大量的钩子函数,可以在用例的不同生命周期自动调用。 比如,在测试用例收集阶段,可利用 hook 函数修改测试用例名称的编码。 pytest的hook是基于Python的插件系统实现的,使用特定的命名规范和装饰器来定义钩子函数。你可以在py

    2024年02月12日
    浏览(37)
  • Pytest自动化测试框架---(单元测试框架)

    unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发一些功能(报告,初始化webdriver,或者http请求方法)便可实现。 但自

    2024年02月14日
    浏览(70)
  • Python测试框架 Pytest —— mock使用(pytest-mock)

    安装:pip install pytest-mock 这里的mock和unittest的mock基本上都是一样的,唯一的区别在于pytest.mock需要导入mock对象的详细路径。 先将需要模拟的天气接口,以及需要模拟的场景的代码写好,然后在进行遵循pytest的用例规范进行书写关于mock的测试用例 通过上述代码,提供pytest中

    2024年02月09日
    浏览(46)
  • 【Pytest实战】Pytest+Allure+Jenkins自动化测试框架搭建

    😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD 如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊 座右铭:不想当开发的测试,不是一个好测试✌️。 如果感觉博主的文章还不错的话,还请点赞、收藏哦

    2024年02月15日
    浏览(65)
  • 测试框架pytest教程(4)运行测试

    会运行该文件内test_开头的测试方法  该 -q/--quiet 标志使输出保持简短  pytest的测试用例可以不写在类中,但如果写在类中,类名需要是Test开头,非Test开头的类下的test_方法不会被搜集为用例。 将测试用例分组到类中的优点: 测试组织:将相关的测试用例组织到同一个类中

    2024年02月12日
    浏览(42)
  • pytest 接口测试框架学习

    使用pycharm 新建一个project, 进入preferences,添加 pytest,和requests       【留言777】 各位想获取源码等教程资料的朋友请 点赞 + 评论 + 收藏 ,三连! 三连 之后我会在评论区挨个私信发给你们~

    2024年02月15日
    浏览(40)
  • Pytest测试框架3

    目录: pytest结合数据驱动-yaml 数据驱动 yaml文件介绍 yaml文件使用 代码实例: pytest结合数据驱动-excel 读取Excel文件 openpyxl库的安装 openpyxl库的操作 代码实例: pytest结合数据驱动-csv csv文件介绍 csv文件使用 代码实例: pytest结合数据驱动-json json文件介绍 json文件使用 pytest测试

    2024年02月14日
    浏览(33)
  • 测试框架pytest教程(10)自定义命令行-pytest_addoption

    `pytest_addoption`是pytest插件系统中的一个钩子函数,用于向pytest添加自定义命令行选项。 在pytest中,可以使用命令行选项来控制测试的行为和配置。`pytest_addoption`钩子函数允许您在运行pytest时添加自定义的命令行选项,以扩展pytest的功能。 下面是一个使用`pytest_addoption`钩子函

    2024年02月11日
    浏览(35)
  • 测试框架pytest教程(2)-用例依赖库-pytest-dependency

    对于 pytest 的用例依赖管理,可以使用  pytest-dependency  插件。该插件提供了更多的依赖管理功能,使你能够更灵活地定义和控制测试用例之间的依赖关系。 Using pytest-dependency — pytest-dependency 0.5.1 documentation 安装 pytest-dependency 插件: 依赖方法和被依赖方法都需要使用装饰器

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包