当前位置: 首页 > news >正文

pytest运行时参数说明,pytest详解,pytest.ini详解

一、Pytest简介

1.pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:
简单灵活,容易上手,支持参数化
2.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium、appium等自动化测试,requests+pytest接口自动化测试
3.pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如:
pytest-selenium(集成selenium)
pytest-html(完美html测试报告生成)
pytest-rerunfailures(失败用例重复执行)
pytest-xdist(多CPU分发)
4.测试用例的skip和xfail处理
5.可以很好的和jenkins集成
6.pytest也支持allure测试报告
7.能兼容unittest,是unittest的扩展

二、Pytest以及常用插件安装

把如下内容写到一个txt文件中,如require-install.txt
pytest
pytest-html
pytest-xdist
pytest-rerunfailures
然后在Dos窗口中使用此命令安装所有的模块:pip install -r require-install.txt
通过命令:pytest --version验证安装结果。如果报如下错误则需要调整python或pytest的版本,这是python和pytest的版本不兼容:在这里插入图片描述
下面说两个错误例子,一个是win7、python3.7.4以及pytest5.0+,将python降到3.7.3就ok了,另一个是Windows 10, python 3.8.1, pytest 5.3.3,将pytest降到4.6.9以下版本也ok,因此建议你要么降python版本,要么降pytest版本试试。
笔者使用的是:win7+python3.7.3+pytest5.4.1,亲测没问题。

三、 pytest框架基础应用

  1. pytest运行函数时和运行类里面的方法情况如下:
importpytestdeftest01():print('测试用例一')defabcd():print('测试用例二')classTestCase:deftest_03(self):print('测试用例三')defdefg(self):print('测试用例四')if__name__=='__main__':pytest.main(['-s','pytest-demo.py'])

运行结果如下:

在这里插入图片描述
注意事项:
(1) 测试函数、类中的测试方法都必须以test_ 开头,当然以什么开头在pytest可自定义。
(2) 测试类必须以Test开头,并且不能带有init方法
(3) 断言必须使用assert断言
执行方式:
(1) 主函数方式运行:
指定运行文件:pytest.main([’-s’,‘pytest-demo.py模块名’])
注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest.main()运行。因为pytest.main()会运行当前目录下所有以test_开头或者以_test结尾的文件。
(2) 命令行方式运行
点开Pycharm左下角的:Terminal打开当面目录下的命令行窗口。
输入命令执行:pytest pytest-demo.py模块名
注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest命令运行,因为pytest会运行当前目录下所有以test_开头或者以_test结尾的文件。

四、 运行时参数说明

-s:显示打印内容
如:pytest pytest-demo.py -s
等价于:pytest.main([’-s’,‘pytest-demo.py’])
:::指定测试用例运行
运行函数:如:pytest pytest-demo.py::test_01
等价于:pytest.main([’-s’,‘pytest-demo.py::test01’])
运行类中方法:如:pytest pytest-demp.py::TestCase::test_03
等价于:pytest.main([’-s’, ‘pytest-demo.py::TestCase::test_03’])
–html=路径/report.html:生成xml/html格式测试报告(需要先安装pytest-html)
如:pytest pytest-demp.py --html-./report.html
等价于:pytest.main([’-s’,‘pytest-demo.py’,’–html=./report.html’])
–maxfail=1:出现1个失败就终止测试
如:pytest pytest-demo.py --maxfail=1
等价于:pytest.main([’-s’,‘pytest-demo.py’,’–maxfail=1’])
-n:pytest-xdist多线程运行(需要先安装pytest-xdist)
如:pytest pytest-demo.py -n 2
等价于:pytest.main([’-s’,‘pytest-demo.py’,’-n=2’])
在用例中使用time.sleep(2)加等待时间测试,发现多线程时间减少了。
–reruns NUM:重试运行测试用例(需要先安装pytest-rerunfailures)
如:pytest pytest-demo.py --reruns 2
则一旦有用例失败,则会重复执行两次,貌似这种不能用main运行。

由此能看出:pytest.main([’-s’,‘pytest-demo.py模块名’]),main方法中是传入的一个list格式,list中可以传入多个参数。

五、pytest的ini配置文件

pytest.ini文件是pytest的主配置文件,可以改变pytest的默认行为。
1.pytest.ini的放置位置:一般放在项目工程的根目录(即当前项目的顶级文件夹下)
2.pytest.ini的作用:指定pytest的运行方式(在cmd输入pytest后,会读取pytest.ini中的配置信息,按指定的方式去运行)
3.cmd下使用 pytest -h 命令查看pytest.ini的设置选项(以下截图只是部分选项)
常用设置选项如下:
[pytest]
addopts = -s … #可添加多个命令行参数,用空格分隔
testpaths = …/pytestproject #测试用例文件夹,可自己配置,…/pytestproject为上一层的pytestproject文件夹。
python_files = test*.py #配置测试搜索的模块文件名称
python_classes = Test* #配置测试搜索的测试类名
python_funtions = test #配置测试搜索的测试函数名

示例如下:
[pytest]
addopts = -s --html=./report.html
testpaths = …/pytestproject
python_files = test*.py
python_classes = Test*
python_funtions = test*

注意:
1.运行的时候自动读取配置文件,运行pytestproject下的所有test开头的模块文件。

这可能是B站最详细的pytest自动化测试框架教程,整整100小时,全程实战!!!

http://www.lryc.cn/news/127865.html

相关文章:

  • Matplotlib绘图知识小结--Python数据分析学习
  • mouseover、mouseout和mouseenter、mouseleave之间的区别(配对使用)
  • 【论文阅读】基于深度学习的时序预测——Autoformer
  • 【AI】《动手学-深度学习-PyTorch版》笔记(十五):网络中的层、块和参数
  • Flink之Task解析
  • 计算机竞赛 python 爬虫与协同过滤的新闻推荐系统
  • 如何使用Kali Linux进行密码破解?
  • 【Freertos基础教程】任务管理之基本使用
  • VMware安装BC-linux-eluer 21.10,配置网络
  • 2023最新Windows编译ffmpeg详细教程,附msys2详细安装配置教程
  • 【SpringBoot】87、SpringBoot中集成Redisson实现Redis分布式锁
  • 宝藏级画图工具-drawio
  • 36_windows环境debug Nginx 源码-使用 VSCode 和WSL
  • 海康威视iVMS综合安防系统任意文件上传(0Day)
  • SOME/IP通信对数据包的大小有要求
  • 苹果电脑会自动清理垃圾吗 苹果电脑系统垃圾怎么清除
  • 【0216】stats collector(统计信息收集器)资源初始化之获取IPV4套接字地址信息(2)
  • uni-app 面容、指纹识别插件(uni-face-login)
  • 专治疗懒病:GO、KEGG富集分析一体函数
  • pygame第6课——贪吃蛇小游戏
  • iptables之iptables表、链、规则 、匹配模式、扩展模块、连接追踪模块(一)
  • Mac 卸载appium
  • 数据结构----哈夫曼树
  • Spring之Aop切面---日志收集(环绕处理、前置处理方式)--使用/教程/实例
  • UE4/UE5 照明构建失败 “Lightmass crashed”解决“数组索引越界”
  • 并发编程系列-Semaphore
  • 3年 Android 开发的面试心经(后悔当初没有拿 N+1)
  • 【c语言】 -- 指针进阶
  • 软件压力测试对软件产品起到什么作用?
  • Stephen Wolfram:那么…ChatGPT 在做什么,为什么它有效呢?