pytest自学第一期
开始自学pytest了,我并不想看网上的各种自学教程和文档,要看咱们今天就看pytest的官方文档,不会英语咱们就用翻译,看不懂原理咱们就翻源码,就人肉试错
学习一个技术,使用速成鸡的套路是一个办法,啃文档小火慢炖也是一个方法,我个人是打算了解pytest框架后集成seleium框架进行一个整体的自动化框架的搭建,一定会遇到一些需要我自己动手扩展才能实现的需求,这样的话速成鸡套路对未来来说肯定是会给我挖坑埋雷的,所以今天直接使用文档开淦
第一章:安装与启动
1.1:安装

1.2:简单启动
先看pytest文档的“HELLO WORLD”事例,简单的4行代码,及简单的运行命令


通过这个事例,我们虽然能简单看懂了这个小Demo,但是同样我们也会有几个问题:
1:我创建了同样的文件,但是不知道在哪里输入命令运行pytest?
回答:pychram的这里
但是我在cmd中使用同样命令无法运行,我不知道为什么,标红以后研究
2:我运行时没有传入任何目录,pytest如何找到我要运行的文件?
回答:首先要看你在哪个目录运行pytest命令,如果你只是运行了pytest这个命令,那么就会在你运行命令的目录中去寻找 所有以 test_*.py 和 *_test.py 命名的文件,所以该例子中你必须将测试py文件创建合适的命名。
3:pytest以什么方式寻找文件,会不会影响我的命名,会不会有不安全,不严谨的情况存在导致出现奇怪的事情?
回答:pytest的文件查找方式和方法查找方式遵循 Standard test discovery rules(标准测试发现原则)
标准测试发现原则,想扩展可以自行阅读:https://docs.pytest.org/en/stable/goodpractices.html#test-discovery

4:前面说过了pytest会查找全部符合名字的文件,那么pytest命令会运行多个文件?
回答:会运行找到的全部符合规则的文件,后续会学习如何控制运行自己想要运行的文件
5:该例子中有两个方法,pytest如何知道我要运行测试的方法?
回答:同样使用该查找方法,查找我们要测试的方法
6:为何该例子中,pytest 认定测试没有通过,并给出了 F 的测试结果,pytest是根据什么条件判断的?
回答:F代表没有通过
pytest通过 assert关键字进行测试结果的判定,assert 为true即通过,反之失败
如果测试的方法中没有 assert关键字进行判断,那么这个方法的测试便会通过,当然也可以使用多个assert关键字进行多次测试如下图:


通过这几个问题,对pytest有了一个比较基础的理解,接下来再继续慢慢学
1.3 pytest判断异常
前面提到了pytest可以使用assert关键字断言某一个结果的值是 True 还是 False 来判断测试结果
我们是否能判断某一个方法是否触发了某个异常呢?肯定是可以的

但是使用原来的assert断言模式其实也是可以实现的,只不过是麻烦一些,但是需要知道pytest提供了更方便的内置方法


1.5 class中运行多个测试用例
可以将多个测试用例放在一个class中,这样可以分用例查看各个用例的运行结果(所以不要在一个方法中使用多个assert的方法将创造多个用例,因为其中一个assert没过去其他的就不执行了,而且pytest提供了更简单的方法不是,如题)


注意,使用这样方法时,class(类名) 依然要遵循那个查找原则,且 T要大写
class test_c 找不到
class abc_c 找不到
class Ttest_c 找不到
class Testcc 可以
class Test_c 可以
class ss_Test 找不到
class Test 可以
1.6 为测试创建唯一的临时文件夹
我不知道这个有什么用。。。


第一期完,后续还有不懂的我了解后会自动补全,我肯定有错误地方的期望多多指出,继续学习
pytest自学第一期的更多相关文章
- pytest自学第二期
2.1 通过python解释器调用 pytest 我不知道有什么用:-) 以后就这样,如果有自己学过但是不知道的东西,就挂在那里晒着鞭尸,一直不会就一直鞭尸,直到自己参透了其中的道理再回到这里补全 在 ...
- 从零自学Hadoop(03):Linux准备上
阅读目录 序 检查列表 常用Linux命令 搭建环境 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sou ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- 聊一聊我在 B 站自学 Java 的经历吧
Hey guys ,这里是 cxuan,欢迎你收看我最新一期的文章. 这是一篇鸽了很久的文章...... 事情还要从上回说起...... 我爱 B 站! 这篇文章我汇总了 B 站上计算机基础(操作系统 ...
- 从零自学Hadoop(22):HBase协处理器
阅读目录 序 介绍 Observer操作 示例下载 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,Sour ...
- 前端自学路线之js篇
上一篇我们讲了前端切图的学习路线,不知大家有没有收获.今天来聊聊前端工程师的核心技能之——JavaScript.js这门语言看似简单,但要做到入门.熟练以至于架构的程度,还是有一段路要走的,今天就来聊 ...
- 从零自学Hadoop(20):HBase数据模型相关操作上
阅读目录 序 介绍 命名空间 表 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
- 从零自学Hadoop系列索引
本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 从零自学Hadoop(01):认识Hadoop ...
- 从零自学Hadoop(21):HBase数据模型相关操作下
阅读目录 序 变量 数据模型操作 系列索引 本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文链接,谢谢合作. 文章是哥(mephisto)写的,SourceLink 序 ...
随机推荐
- 在服务器上使用python-gym出现的显示问题
参考链接: http://www.luyixian.cn/news_show_392045.aspx https://www.cnblogs.com/cenariusxz/p/12666938.htm ...
- [Window编程][VC6.0++][error LNK2001: unresolved external symbol __imp__PlaySoundA@12]
错误情况 这几天看<Windows游戏编程大师技巧>,在看第三章的时候,把书上的例子敲了一边,但是出现了下述错误,最后在网上找到了解决方法. 错误截图 解决方法 在main.cpp头文件下 ...
- [CSP-S2019]树上的数 题解
CSP-S2 2019 D1T3 考场上写了2h还是爆零……思维题还是写不来啊 思路分析 最开始可以想到最简单的贪心,从小到大枚举每个数字将其移动到最小的节点.但是通过分析样例后可以发现,一个数字在移 ...
- 以Winsows Service方式运行JupyterLab
有数据分析,数据挖掘,以及机器学习和深度学习实践经验的读者应该会对Jupyter Notebook这一工具十分熟悉,而JupyterLab是它的升级版本,其提供了更具扩展性,更加可定制化的功能选项. ...
- 攻防世界——Misc新手练习区解题总结<1>(1-4题)
第一题this_if_flag: 第一题就不多说了,题目上就给出了flag复制粘贴就可以了 第二题pdf: 下载附件后,得到如下界面 Ctrl+a全选文字,复制出来看看是什么,粘贴后恰好得到flag ...
- Math Problem(数学)
链接:https://ac.nowcoder.com/acm/contest/893/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K ...
- hdu6075 2019CCPC网络选拔赛1004 path
题意:给定一个带权有向图,有q组询问,每次询问在有向图的所有路径中,第k小的路径权值 解题思路:因为k最大只有5e4,考虑暴力搜索出前maxk小的路径并用数组记录权值,然后就可以O(1)查询. 具体实 ...
- 13props 对象
props: { homeData: { type: Object, required: true } }, 父组件传递给子组件是对象homeData或者数组: homeData={name:'zs' ...
- Mysql执行计划(大章)
Mysql的执行计划 执行计划是啥? 使用explain关键字可以模拟优化器执行SQL查询语句,从而知道Mysql是如何处理你的SQL语句的.分析你的查询语句或者表结构的性能瓶颈 语法 explain ...
- 自定义线程池ThreadPoolExecutor
使用自定义的方式创建线程池 Java本身提供的获取线程池的方式 使用Executors直接获取线程池,注意,前四个方式的底层都是通过new ThreadPoolExecutor()的方式创建的线程池, ...