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运行函数时和运行类里面的方法情况如下:
python 复制代码
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开头的模块文件。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
小码哥说测试4 分钟前
接口测试用例设计的关键步骤与技巧解析!
自动化测试·测试工具·jmeter·职场和发展·测试用例·接口测试·postman
霍格沃兹测试开发学社测试人社区5 分钟前
软件测试学习笔记丨Flask操作数据库-数据库和表的管理
软件测试·笔记·测试开发·学习·flask
钱钱钱端18 小时前
【压力测试】如何确定系统最大并发用户数?
自动化测试·软件测试·python·职场和发展·压力测试·postman
测试199819 小时前
外包干了2年,快要废了。。。
自动化测试·软件测试·python·面试·职场和发展·单元测试·压力测试
AI_小站1 天前
LLM——10个大型语言模型(LLM)常见面试题以及答案解析
人工智能·程序人生·语言模型·自然语言处理·大模型·llm·大模型面试
qq_433716951 天前
测试分层:减少对全链路回归依赖的探索!
自动化测试·软件测试·功能测试·测试工具·回归·pytest·postman
qq_433716951 天前
Postman断言与依赖接口测试详解!
自动化测试·软件测试·功能测试·测试工具·mysql·接口测试·postman
良技漫谈1 天前
Rust移动开发:Rust在iOS端集成使用介绍
后端·程序人生·ios·rust·objective-c·swift
小白~小黑1 天前
软件测试基础十二(python变量进阶)
python·功能测试·测试工具·自动化
我爱学Python!1 天前
AI Prompt如何帮你提升论文中的逻辑推理部分?
人工智能·程序人生·自然语言处理·chatgpt·llm·prompt·提示词