python的pytest框架之命令行参数详解(上)
作者:linux超 发布时间:2021-07-23 02:18:07
前言
pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作。pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixture模型。pytest是一个软件测试框架,是一款命令行工具,可以自动找到测试用例执行,并且回报测试结果。有丰富的基础库,可以大幅度提高用户编写测试用例的效率。具备扩展性,用户可以自己编写插件,或者安装第三方提供的插件。可以很容易地与其他工具集成到一起使用。比如持续集成,web自动化测试等。
下面列举了一些pytest相对于其他框架的优点
1. 简单的测试可以很简单的编写
2. 复杂的测试也可以简单的编写
3. 测试的可读性
4.易于上手
5. 断言仅使用原生的assert关键字,而不是像unittest那样使用self.assert**那样
6. pytest可以运行unittest和nose编写的测试用例
上面大部分结论其实也不是我个人总结的,是我从一本书上看到的,因为我也是刚刚接触这个框架,了解的也并不多。还有一个重要原因就是写文章不写点所谓的科学理论好像缺少点啥……(别管了前面了*总之一句话:pytest就是一个测试框架和unittest一类,功能很强,支持好多插件,用例写起来简单,代码逻辑性强,值得学习!实际工作中能不能用,能不能用好那就要靠自己了!)^_^废话不多说!
编写第一个测试函数(用例)
from selenium import webdriver
def testOpenUrl():
try:
driver = webdriver.Firefox() # 打开浏览器
driver.get('http://www.baidu.com') # 访问百度
title = driver.title # 获取百度首页的title
assert title == '百度一下,你就知道' # 断言
except AssertionError:
raise AssertionError('断言失败!')
driver.quit()
可以看到用例很简单,就是一个普通的函数(驱动浏览器,打开百度首页,断言首页的title是否正确),那么pytest是如何运行测试用例的呢?
我们可以通过cmd终端,并且换到当前用例所在的目录,输入 pytest 即可,运行结果如下所示
pytest执行用例命令行参数
上面我们已经学会了执行用例的命令 就是pytest, 那么真的就这么简单了吗?其实不然,pytest 还提供了很多可供我们执行用例的命令行参数,下面我们就一一介绍并演示
1.-v:pytest -v 说明:可以输出用例更加详细的执行信息,比如用例所在的文件及用例名称等
2.-s:pytest -s 说明:输入我们用例中的调式信息,比如print的打印信息等,我们在上面用例8行加上一句 print(driver.title),我们再运行一下我们的用例看看
3.-m:pytest -m ”标记“ 说明:执行特定的测试用例。我们再次修改一下我们的用例,并添加一个新的用例
from selenium import webdriver
import pytest
@pytest.mark.run_this_testcase
def testOpenUrl():
try:
driver = webdriver.Firefox() # 打开浏览器
driver.get('http://www.baidu.com') # 访问百度
title = driver.title # 获取百度首页的title
print(driver.title)
assert title == '百度一下,你就知道' # 断言
except AssertionError:
raise AssertionError('断言失败!')
driver.quit()
def testBaidu():
driver = webdriver.Firefox() # 打开浏览器
driver.get('http://www.baidu.com') # 访问百度
title = driver.title # 获取百度首页的title
assert title == '百度一下,你就知道' # 断言
我们可以看到只执行了被标记的用例,新添加的用例并没有被执行
4.-k:pytest -k "关键字" 说明:执行用例包含“关键字”的用例
5.-q:pytest -q 说明:简化控制台的输出,可以看出输出信息和上面的结果都不一样, 下图中有两个..点代替了pass结果
以上5个参数,大家可以自己尝试一下,下一篇文章会继续讲解其他几个常用的参数的使用以及pytest是如何发现测试用例的!
下篇将继续更新其他一些命令选项的使用,和pytest收集测试用例的规则!
来源:https://www.cnblogs.com/linuxchao/p/linuxchao-pytest-1.html


猜你喜欢
- 方法一 :使用常规的思路def transpose(M): # 初始化转置后的矩阵 result = [] &nbs
- 在本文上两篇中,我们学习了脚本语言 VBScript 的变量、函数、过程和条件语句,本篇将继续给大家介绍 VBScipt 的循环语句,并对脚
- Python2 和 Python3 是不兼容的,如果碰到无法升级到 Python2 代码,或者同事中有坚守 Python2 阵营的情况,就要
- 日志级别CRITICAL 50ERROR 40WARNING 30INFO 20DEBUG 10logging.basicConfig()函
- 如何根据二维数组中的某一行或者某一列排序?假设data是一个numpy.array类型的二维数组,可以利用numpy中的argsort函数进
- 什么是接口测试接口测试主要用于检测外部系统与内部系统之间,以及系统内部各 个子系统之间的交互点。其测试的重点是,检查数据的交换、传递和控 制
- blankzheng的blog:http://www.planabc.net/1、使用fieldset和legend标签在form中,我们经
- sql调优的几种方式:避免使用select *、用union all 代替union、小表驱动大表、批量操作、多用limit、in中值太多、
- Python是一门简单易学的编程语言。阅读好的Python程序感觉就像阅读英语,尽管是非常严格的英语。Python的这种伪代码特性是其最大强
- 介绍目前它是Python数值计算中最为重要的基础包,将numpy的数组的对象作为数据交互的通用语,一般我们要充分理解好矩阵计算的原理,这需要
- 目录前言全局参数持久化写在最后总结参考文档:前言自从 2018 年发布第一版 MySQL 8.0.11 正式版至今,MySQL 版本已经更新
- 1. 问题使用PyCharm 创建完Django 项目 想登录admin 页面 却不知道用户名和密码。 用的默认sqlit2.解决办法2.1
- 本文实例讲述了JavaScript命令模式原理与用法。分享给大家供大家参考,具体如下:第一,命令模式: (1)用于消除调用者和接收者之间直接
- mean_squared_error / mse 均方误差,常用的目标函数,公式为((y_pred-y_true)**2).mean()mo
- 日期和时间类型MySQL有多个表示各种日期和时间值的数据类型, 比如YEAR和DATE. MySQL存储时间的最精确粒度是秒。 然而, 能做
- 前言说到覆盖索引之前,先要了解它的数据结构:B+树。先建个表演示(为了简单,id按顺序建):idname1aa3kl5op8aa10kk11
- 一、用HTTP头信息 也就是用PHP的HEADER函数。PHP里的HEADER函数的作用就是向浏览器发出由HTTP协议规定的本来应该通过WE
- 一个简单的实现class NaiveFilter():'''Filter Messages from keyword
- 理解 pandas 的函数,要对函数式编程有一定的概念和理解。函数式编程,包括函数式编程思维,当然是一个很复杂的话题,但对今天介绍的 app
- 平时在PL/SQL中的编程中遇到一些问题,这里以问答的形式来进行把它们总结下来,以供大家分享。1、当需要向表中装载大量的数据流或者需要处理大