Pytest自动化测试框架---(单元测试框架)

这篇具有很好参考价值的文章主要介绍了Pytest自动化测试框架---(单元测试框架)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

但自动化测试中我们常常需要根据不同需求挑选部分测试用例运行,并且我们希望用例克服环境不稳定的局限,即运行失败后自动重新运行一次,如果成功就认为是环境问题导致第一次失败,还有我们经常希望测试用例可以并发执行等等,这些unittest都做不到或者需要大量二次开发才能做到,那么有没有更加强大的框架可以替代unittests呢?

pytest是python里的一个强大框架,它可以用来做单元测试,你也可以用来做功能,接口自动化测试。而且它比unittest支持的功能更多更全面。但是pytest在Getstarted里给出的实例却很简单,很多同学错以为它只是跟unittest一样是个单元测试框架罢了,如果你查询中文互联网,你也只能找到寥寥数篇大致一样的用法,可以说pytest的精髓使用,没有被大家挖掘出来,如此强大的框架不应该被埋没,今天我就带领大家深入pytest使用,共同领略pytest的强大。

1.pytst安装

pytest不属于python的标准库,所以需要安装才能使用, 安装方式如下:
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
如果你已经安装有pytest,想查看它的版本号:

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

2.你的第一个pytest测试
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
非常简单吧, 如果想运行多个用例该如何做呢?

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

注意:

(1).如果你想用pytest寻找整个文件夹下的测试用例,那么文件须以test_开头或者以test结尾。
(2).测试类以Test开头,并且不能带有 init 方法。
(3).测试函数以test开头。
(4).另外,pytest不支持也不打算支持中文路径,如果项目路径中有中文会报错。
好了,pytest的getStarted就结束了, 看了上面的应用方式的确没觉得它哪里强大。 别着急,我们再来想一想,如果你有个测试框架,你希望如何用这个框架做测试?

3.灵活的指定测试用例运行集。

在unittest框架里,你只能通过suite.addTest(),或者defaultTestLoader.Discover()两种方法在查找测试用例,对于你不需要的测试用例,只能用@unittest.skip()

来忽略,但做不到不改动代码变更测试用例集,pytest很好的实现了这一点,它支持如下查找:
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展难道就仅限于此吗? 其实pytest帮我们实现了更多的高级功能,比如:

4.并发运行测试用例集

关注公众号TesterTalk,跟我一起关注测试技术
首先,你得安装个插件:
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

其次,要注意区这个插件仅仅支持python3.6版本及以上,而且如果你想多进程并发,必须跑在Unix或者Mac机器上,windows环境仅仅支持多线程运行。
运行上需要指定参数:

–workers (optional) X。 多进程运行, X是进程数。 默认值1。
–tests-per-worker (optional) X. 多线程运行, X是每个worker运行的最大并发线程数。 默认值1。举例来说:
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

5.测试报告优化
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
生成的结果如下:

有时候,我们需要克服环境问题,让失败的用例rerun,有没有办法呢?
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
生成的结果如下:

可以看到,rerun聚合在了报告里。

我们自动化一般用到持续集成,Jenkins里需要junit XML格式的报告,pytest有没有办法直接生成?

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
这就结束了吗?还远呢?数据参数化你了解下?

6.数据参数化

pytest有几种数据参数化方式:
pytest.fixture(). 不带参数
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

pytest.fixture(), 带parms参数:

params with @pytest.fixture, a list of values for each of which the fixture function will execute and can access a value via request.param.

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
report显示下图,可以看到test_login被执行了2遍,每次执行带入的数据不同:
除了直接用pytest.fixture, 还可以这么用:

pytest.mark.usefixtures()
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

pytest固然强大,这就结束了吗?还有什么高阶的功能吗?必须的。

7.pytest.mark.parametrize实现数据驱动
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

如果我的数据来自外部文件呢?
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
到这里为止,你已经学习了pytst的基础功能,高阶功能,还有什么吗? 如果你之前的框架是unittest, pytest支持无缝切换, 你不需要改任何代码。 

记得上次直播我分享的unittest实现的自动化框架吗,我们看看这个page:

这个是unittest实现的测试类,我们之间在terminal里运行
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展
怎么样,就问你惊喜不惊喜?!

当然,pytest的特色还远不只与此,我们最后介绍一个高级特性,它允许你在用例运行的整个session里,或者一个module里共享测试数据。

8.作用域(scope)实现数据共享(autouse)
我们知道,fixture,允许你不带参数运行和带参数运行, 调用fixture的第三种方式就是使用autouse
fixture decorator一个optional的参数是autouse, 默认设置为False。 当默认为False,就可以选择用上面两种方式来试用fixture。 当设置为True时,在一个session内的所有的test都会自动调用这个fixture。 权限大,责任也大,所以用该功能时也要谨慎小心。

举例来说,我想初始化我的浏览器,但是我不想每次测试运行都初始化,怎么办呢?我可以用scope限制住。
首先要建立一个conftest.py文件:

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

其次,写我们的测试类
Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

fixture的存在使得我们在编写测试函数的准备函数、销毁函数或者多个条件的测试提供了更加灵活的选择。
autouse的scope含义如下:

autouse fixtures obey the scope= keyword-argument: if an autouse fixture has scope=’session’ it will only be run once, no matter where it is defined. scope=’class’ means it will be run once per class, etc.
if an autouse fixture is defined in a test module, all its test functions automatically use it.
if an autouse fixture is defined in a conftest.py file then all tests in all test modules below its directory will invoke the fixture.

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:


          【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通

二、接口自动化项目实战  

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

三、Web自动化项目实战

四、App自动化项目实战 

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

五、一线大厂简历

六、测试开发DevOps体系 

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

七、常用自动化测试工具

八、JMeter性能测试 

Pytest自动化测试框架---(单元测试框架),pytest,单元测试,软件测试,程序人生,自动化测试,功能测试,职场发展

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!文章来源地址https://www.toymoban.com/news/detail-628944.html

到了这里,关于Pytest自动化测试框架---(单元测试框架)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 自动化测试框架 —— pytest框架入门篇

    今天就给大家说一说pytest框架。 今天这篇文章呢,会从以下几个方面来介绍: 1、首先介绍一下pytest框架 2、带大家安装Pytest框架 3、使用pytest框架时需要注意的点 4、pytest的运行方式 5、pytest框架中常用的插件 pytest 是 python 的第三方单元测试框架,比自带 unittest 更简洁和高效

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

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

    2024年02月15日
    浏览(60)
  • Selenium+Pytest自动化测试框架

    selenium自动化+ pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承 一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 测试框架有什么优点呢: 代码复用率高,如果不使用框架的话,代码会很冗余 可以组装日志、报告、邮件

    2024年02月07日
    浏览(60)
  • 【自动化测试教程】 —— pytest 框架详解 ~

    特点: 容易上手, 入门简单, 文档丰富, 文档中有很多参考案例 支持简单的单元测试和复杂的功能测试 支持参数化 执行测试用例过程中, 支持跳过操作 支持重复失败的case 支持运行Nose, unittest编写测试用例 pytest支持很多第三方插件 方便和持续集成工具集成 断言方法: assert res

    2024年02月12日
    浏览(49)
  • 从0到1精通自动化测试,pytest自动化测试框架,doctest测试框架(十四)

    doctest从字面意思上看,那就是文档测试。doctest是python里面自带的一个模块,它实际上是单元测试的一种。 官方解释:doctest 模块会搜索那些看起来像交互式会话的 Python 代码片段,然后尝试执行并验证结果 doctest测试用例可以放在两个地方 函数或者方法下的注释里面 模块的

    2024年02月11日
    浏览(85)
  • 引入成熟的Pytest自动化测试框架

    虽然我们能使用脚本编写自动化测试框架,但没有必要重复找车轮子, 引入成熟的自动化测试框架 即可, Pytest是目前最成熟、功能最全面的Python测试框架之一 ,简单灵活、易于上手,可完全兼容其他测试框架如unitest,支持参数化和测试编排功能,扩展性强。 1、安装Pytes

    2024年02月20日
    浏览(36)
  • Selenium+Pytest自动化测试框架详解

    selenium自动化+ pytest测试框架 本章你需要 一定的python基础——至少明白类与对象,封装继承; 一定的selenium基础——本篇不讲selenium,不会的可以自己去看selenium中文翻译网 测试框架有什么优点 代码复用率高,如果不使用框架的话,代码会很冗余 可以组装日志、报告、邮件等

    2024年02月08日
    浏览(93)
  • Pytest自动化测试框架之Allure报告

    Allure Framework是一种灵活的、轻量级、多语言测试报告工具。 不仅可以以简洁的网络报告形式非常简洁地显示已测试的内容, 而且还允许参与开发过程的每个人从日常执行中提取最大程度的有用信息和测试。 从开发/测试的角度来看: Allure报告可以快速查看到缺陷点,可以将

    2024年02月06日
    浏览(85)
  • Selenium + Pytest自动化测试框架实战(上)

    今天呢笔者想和大家来聊聊selenium自动化+ pytest测试框架,在这篇文章里你需要知道一定的python基础——至少明白类与对象,封装继承;一定的selenium基础。这篇文章不会selenium,不会的可以自己去看selenium中文翻译网哟。 测试框架有什么优点呢 : 代码复用率高,如果不使用框

    2024年04月27日
    浏览(42)
  • 全网超全,pytest自动化测试框架pytest.ini配置文件详细(实战)

    pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行 非test文件 pytest里面有些文件是非test文件 pytest.ini:pytest的主配置文件,可以改变pytest的默认行为 conftest.py:测试用例的一些fixture配置 init .py:识别该文件夹为p

    2024年02月11日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包