热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Pytest的高级用法,你get到了吗?

每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试,领取资料可加:magetest码同学抖音号:小码哥聊软件测试 目前大家听到

每天进步一点点,关注我们哦,每天分享测试技术文章

本文章出自【码同学软件测试】

码同学公众号:自动化软件测试,领取资料可加:magetest

码同学抖音号:小码哥聊软件测试

 



目前大家听到比较多的单元测试框架,无非就是pytest和unittest。unittest是老框架了,很多人都用来做自动化,无论是UI还是接口。pytest是基于unittest开发的另一款更高级更好用的单元测试框架,无论面试还是工作使用频率都很高,势头略胜unittest。

 

 

 

 

pytest 的官方网站介绍,它具有如下特点:

l 非常容易上手,入门简单,文档丰富,文档中有很多实例可以参考

l 能够支持简单的单元测试和复杂的功能测试

l 支持参数化

l 执行测试过程中可以将某些测试跳过(skip),或者对某些预期失败的case标记成失败

l 支持重复执行(rerun)失败的 case

l 支持运行由 nose, unittest 编写的测试 case

l 可生成 html 报告

l 方便的和持续集成工具 jenkins 集成

l 可支持执行部分用例

l 具有很多第三方插件,并且可以自定义扩展

 

我相信大家应该或多或少的用过pytest框架,那么今天这篇文章就给大家分享一下大家可能不太知道的pytest的高级用法。主要讲解一下conftest.py和fixture装置函数。

 

conftest.py是什么呢?可以理解成一个专门存放fixture的配置文件。可以单独管理一些全局的fixture。

conftest.py配置fixture注意事项

· pytest会默认读取conftest.py里面的所有fixture

· conftest.py 文件名称是固定的,不能改动

· conftest.py只对同一个package下的所有测试用例生效

· 不同目录可以有自己的conftest.py,一个项目中可以有多个conftest.py

· 测试用例文件中不需要手动import conftest.py,pytest会自动查找

那fixture函数又是什么呢?小朋友你是不是有很多问号?

免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest

 

 

fixture可以让我们自定义测试用例的前置条件


fixture的优势

· 命名方式灵活,不局限于 setup 和teardown 这几个命名

· conftest.py 配置里可以实现数据共享,不需要 import 就能自动找到fixture

· scope="module" 可以实现多个.py 跨文件共享前置

· scope="session" 以实现多个.py 跨文件使用一个 session 来完成多个用例

fixture函数的语法如下

 

 

参数含义:

scope:可以理解成fixture的作用域,默认:function,还有class、module、package、session四个【常用】

autouse:默认:False,需要用例手动调用该fixture;如果是True,所有作用域内的测试用例都会自动调用该fixture

name:默认:装饰器的名称,同一模块的fixture相互调用建议写个不同的name

 

调用方法:

只需要在引用fixture函数的测试用例里面传入被@pytest.fixture这个装饰器装饰的函数的名字即可,就会调用fixture函数中定义的功能,用yield关键字去划分是setup还是teardown,yield前面实现的功能是setup初始化功能,yield后面实现的功能是teardown清场功能。

 

接下来实现一下豆瓣登录的测试用例的书写,项目结构如下

 

 

 

case---测试用例,代码如下:

 

 

base_driver---封装app的driver

 

 

conftest.py里面定义了全局的fixture函数

 

 

命令行执行如下命令进行case的执行:

 

 

 

这样就可以实现豆瓣的登录功能,在函数级别的测试用例执行完之后,等待3秒钟,driver就会自动退出。

免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试

本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

 



推荐阅读
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有