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 序 ...
随机推荐
- HMM隐马尔可夫模型来龙去脉(一)
目录 隐马尔可夫模型HMM学习导航 一.认识贝叶斯网络 1.概念原理介绍 2.举例解析 二.马尔可夫模型 1.概念原理介绍 2.举例解析 三.隐马尔可夫模型 1.概念原理介绍 2.举例解析 四.隐马尔 ...
- PowerJob 在线日志饱受好评的秘诀:小但实用的分布式日志系统
本文适合有 Java 基础知识的人群 作者:HelloGitHub-Salieri HelloGitHub 推出的<讲解开源项目>系列. 项目地址: https://github.com/ ...
- Kubernetes K8S之资源控制器StatefulSets详解
Kubernetes的资源控制器StatefulSet详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...
- Nginx反向代理的使用
一.Nginx的基本命令 nginx:启动 nginx nginx -t :测试配置文件是否有语法错误 nginx -s reopen:重启Nginx nginx -s reload:重新加载Ngin ...
- jmeter http并发测试时报错
错误信息如下:jmeter Response code: Non HTTP response code: java.net.URISyntaxException 网上收了一大堆,都没法解决 我的用到了 ...
- 揭秘日活千万腾讯会议全量云原生化上TKE技术实践
腾讯会议,一款联合国都Pick的线上会议解决方案,提供完美会议品质和灵活协作空间,广泛应用在政府.医疗.教育.企业等各个行业.大家从文章8天扩容100万核,腾讯会议是如何做到的?都知道腾讯会议背后的计 ...
- Python 逆向抓取 APP 数据
今天继续给大伙分享一下 Python 爬虫的教程,这次主要涉及到的是关于某 APP 的逆向分析并抓取数据,关于 APP 的反爬会麻烦一些,比如 Android 端的代码写完一般会进行打包并混淆加密加固 ...
- Sql 注入----学习笔记2
转载自:http://blog.51cto.com/quiterr/1699964 sql注入 sql注入98年第一次出现在<phrack>54期上. 注入攻击有两个关键条件,第一是用户能 ...
- maven踩过的坑
maven配置 maven默认配置 解决每次打开idea的spring项目都需要重新配置maven,选择file/other settings/preference for new projects ...
- 你不知道的JavaScript笔记----对象
对象: 1.定义对象属性 属性描述符(也称为:数据描述符) Object.defineProperty(Object,PropertyName,{ value: 6, writable: true, ...