Python自动化测试框架之Pytest相关用法-基本使用(1)
前期准备
需要准备:pytest库
执行命令:pip install pytest。由于已经安装好了,所以执行情况会如下图所示
安装完成后,如果能够导入说明安装成功可以使用了
Pytest相关
1、基本用法
(1)举例
class Test_Case:def test_case1(self):print('successful')if __name__ == '__main__':pytest.main(['test_demo1.py::Test_Case::test_case1', '-s'])
相关说明:
a.所有的用例名必须以小写“test”开头!不然pytest无法收集到用例
b.pytest.main的括号中还包含“[]”中括号,用于传不定长参数
c.执行的用例中,用例名与类名,类名与文件名之间要用冒号相连。
d.“-s”是pytest的一个运行参数,表示运行过程中执行print打印函数。
输出:
collected 1 itemtest_demo1.py successful
.============================== 1 passed in 0.35s ==============================进程已结束,退出代码为 0
相关说明:
图中表示收集到了1条用例,位于test_demo1.py文件中,在0.35秒内执行通过并打印了"successful"。图中的“小点”表示用例通过。如果用例不通过则是以“F”标识。当然还包括其他,比如“x”表示跳过等。
以上是pytest的基本运行方法,其中的运行参数不仅仅有“-s”,还包含以下参数,其中,标红参数是笔者使用较多的
-v :输出用例更加详细的执行信息等
-s :运行过程中执行print打印函数
-x:只要遇到错误的用例,立即停止执行,并输出结果
-rA: 简单统计测试结果
-collect-only:表示把待执行的用例全部展示出来
-lf:只执行上次失败的用例(失败重跑)
-ff:先运行上一次失败的用例,再运行其他用例(失败重跑)
--reruns=3:失败重跑3次
--reruns=3-delay=3:定义重跑失败用例的时间为3次
-vv :显示详细的测试结果
-tb=no:不展示用例失败的错误详情
-tb=line:展示用例失败的代码具体行数
-tb=short:展示更加详细的错误信息
-k “关键字” 说明:执行用例包含“关键字”的用例
-q 说明:简化控制台的输出,可以看出输出信息和上面的结果都不一样, 下图中有两个…点代替了pass结果
-maxfail=num 当用例错误达到指定数量时,停止测试
-m :执行对应标记的测试用例
--instafail:实时输出用例执行信息
待补充。。。
当然,以上部分参数是需要安装插件才可以使用的,例如:“--instafail、 --reruns”。
pip install pytest-instafail 命令行实时输出错误信息
pip install pytest-rerunfailures 失败重试
如果还对其他参数功能、插件感兴趣或者有需要,可以参考pytest官方手册查阅:Plugin List — pytest documentationhttps://docs.pytest.org/en/latest/reference/plugin_list.html
2、标记运行mark
以上是pytest的基本运行方法,但是只能执行单条用例,如果想执行多条用例该怎么办呢?两种办法:
(1)将需要执行的多条用例都存放在一个类中,然后执行这个类即可,无需填写用例名
class Test_Case:def test_case1(self):print('first')def test_case2(self):print('second')if __name__ == '__main__':pytest.main(['test_demo1.py::Test_Case', '-s'])output-->collected 2 itemstest_demo1.py first
.second
.============================== 2 passed in 0.30s ==============================
(2)使用标志执行多条用例,用例前使用“@pytest.mark.标志名”表示该用例被标记
class Test_Case:@pytest.mark.donedef test_case1(self):print('first')@pytest.mark.done
def test_case2():print('second')if __name__ == '__main__':pytest.main(['test_demo1.py', '-m', 'done'])
这个方法不仅对一个文件中的用例有效,还可以执行多个文件的用例,只要是被打上了相同标记的用例,都可以使用“-m”参数全部执行。
当然还可以执行多个不同标记的用例,执行命令: "-m", "标记名1 or 标记名2"
3、关于pytest.ini
使用“-m”可以实现执行多条用例的效果,但会出现以下警告信息
PytestUnknownMarkWarning: Unknown pytest.mark.done - is this a typo?
原因是缺少了pytest.ini配置文件,导致pytest不识别这个标记,导致标签不生效,所以我们需要创建pytest.ini来存放这些标记,才会被识别。
注意,配置文件名称只能是pytest.ini,更改就会报错!
对于pytest.ini文件格式也有要求,格式如下:
# pytest.ini[pytest]
markers =标记名称1: 标记描述标记名称2: 标记描述
标记名称前是一个缩进,不要手打空格。标签描述可有可无。创建好配置文件并添加了标记名称后,再次运行即可。
当然,pytest.ini文件不仅只是存放标记那么简单,它还可以存放我们的参数,用例文件等被pytest识别并执行。而pytest.main中无需填写。
# pytest.ini[pytest]
markers =doneab;执行的python文件名,*表示模糊匹配
python_files = test_de*
;执行类中的用例的名称
python_classes = Test_Case
;执行参数,注意!pytest.ini文件的注释是用分号!而不是#
addopts = -s -m done
不建议在pytest.ini中使用中文,会引起编码错误!如果有解决方法则忽视。
Python自动化测试框架之Pytest相关用法-基本使用(1)相关推荐
- Python自动化测试框架之Pytest相关用法-Fixture(2)
1.setup和teardown 和unittest一样,pytest也有自己的前置后置条件:setup.teardown.但不同的是,pytest的类型比较多,多达10种,根据不同的生效范围分别为以 ...
- Python自动化测试框架之Pytest教程【让你小鸡变老鹰】
Pytest pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: · 简单灵活,容易上手 · 支持参数化 · 能够支持简单的单元测试和复杂的功能测试,还可以用来做sele ...
- python自动化测试框架pytest.pdf_Python自动化测试框架
随着技术的进步和自动化技术的出现,市面上出现了一些自动化测试框架.只需要进行一些适用性和效率参数的调整,这些自动化测试框架就能够开箱即用,大大节省了开发时间.而且由于这些框架被广泛使用,他们具有很好的 ...
- 7个实用的Python自动化测试框架
目录 前言 1.Unittest 2. Doctest 3.pytest 4.Nose 5.tox 6.Unittest2 7.mock unittest. 结语 前言 随着技术的进步和自动化技术的出 ...
- Python单元测试框架之pytest 3 -- fixtures
From: https://www.cnblogs.com/fnng/p/4769020.html Python单元测试框架之pytest -- fixtures 2015-08-29 13:05 b ...
- Python自动化测试框架有哪些?
令开发者万分高兴的是,开发自己的测试框架的日子终于结束了.以前,开发团队接手一个项目并开始开发时,除了项目模块的实际开发之外,他们不得不为这个项目构建一个自动化测试框架.一个测试框架应该具有最佳的测试 ...
- Python学习教程:Python自动化测试框架需要学习哪些?
需要掌握学习Python自动化测试框架有哪些?常用的Python自动化测试框架有Robot Framework.Pytest.UnitTest/PyUnit.Behave.Lettuce.软件测试的自 ...
- Python自动化测试框架有哪些?怎么选
目录 自动化测试框架概念 自动化测试框架根据思想理念和深度不同,渐进式的分为以下几种: 模块化测试脚本框架: 测试库框架: 数据驱动测试框架: 关键字驱动或表驱动的测试框架: 混合测试自动化框架: 框 ...
- Python自动化测试框架【Allure-pytest功能特性介绍】
Python自动化测试框架[Allure-pytest功能特性介绍] 目录:导读 前言 生成报告 测试代码 目录结构 Allure特性 Environment Categories Fixtures ...
最新文章
- day36-hibernate检索和优化 02-Hibernate检索方式:简单查询及别名查询
- Windows 7 下直接硬盘安装 Ubuntu 10.04成为双系统的方法
- CentOS6安裝Cacti
- 个人对响应式布局的理解
- Java的static关键字用法及原理
- SpringBoot+Redis缓存概念介绍
- 概率分布与马尔科夫链的关系讨论(上传费事)
- 给深度学习入门者的Python快速教程 - numpy和Matplotlib
- 精通git中文版 (连载四)
- BXP无盘中启用bootp服务的设置详解(转)
- 上大计算机专业在哪校区,好消息!成都理工大学在川扩招751人,宜宾校区新增计算机443人...
- 电脑html怎么导入苹果手机,爱思助手把电脑视频怎么导入苹果手机 视频导入iPhone教程...
- 大秦帝国部:黑色裂变(上卷)读后感
- H3C 交换机web页
- php 输出七芒星,SongNet:硬格式控制下的文本生成
- 闰秒及其对计算机系统影响,闰秒原理及其对计算机系统影响
- sasl java_java SASL_SSL 帐号密码 方式访问 kafka
- python对于会计的好处_学好会计学的作用及意义
- 设计原则之合成复用原则
- 怎么使用计算机播放音乐,怎么用Apple Watch控制电脑播放音乐?
热门文章
- 智和信通,部署智慧交通运维系统,构建一站式运维监控平台
- python写入csv指定单元格_使用python将值插入csv中的特定单元格
- 获取tomcat服务器上的部分日志
- android 调用系统相机拍照并返回路径,Android调用相机拍照并返回路径和…
- 【记一次kafka启动报org.apache.zookeeper.KeeperException$NoAuthException:=Noauth for/consumers】
- 企业流程管理实践的创新方法——沙盘演练
- 百度地图JavaScript API 学习之自定义标注图标(一)
- Java阿里云发送短信
- php实现拼音转中文,PHP如何将中文转为拼音?
- 关于最近激烈竞争的打车软件的一些看法