写在前面
pytest零零散散接触的不少,总是感觉缺少系统的学习。后续,我会专门整理pytest系列教程,内容绝对充实。希望大家有兴趣可以跟着我一起敲其中的案例代码,共同成长~
pytest快速入门
简介
The pytest framework makes it easy to write small, readable tests, and can scale to support complex functional testing for applications and libraries.
官网地址 https://docs.pytest.org/en/7.1.x/
中文翻译地址 https://learning-pytest.readthedocs.io/zh/latest/doc/intro/getting-started.html
1、安装
pip install pytest
2、快速上手
新建test.py文件:
代码语言:javascript复制#test.py
import pytest
def inc(x):
return x 1
def testAnswerWrong():
assert inc(3) == 5
def testAnswerRight():
assert inc(3) == 4
if __name__ =="__main__":
pytest.main(['test.py'])
运行结果:
代码语言:javascript复制============================= test session starts =============================
platform win32 -- Python 3.8.5, pytest-6.2.5, py-1.10.0, pluggy-0.13.1
plugins: allure-pytest-2.9.42, Faker-8.4.0, forked-1.3.0, html-2.0.1, metadata-1.11.0, ordering-0.6, rerunfailures-10.0, xdist-2.3.0, seleniumbase-1.63.11
collected 2 items
test.py F. [100%]
================================== FAILURES ===================================
_______________________________ testAnswerWrong _______________________________
def testAnswerWrong():
> assert inc(3) == 5
E assert 4 == 5
E where 4 = inc(3)
test.py:11: AssertionError
=========================== short test summary info ===========================
FAILED test.py::testAnswerWrong - assert 4 == 5
========================= 1 failed, 1 passed in 0.21s =========================
***Repl Closed***
注解
- pytest 使用
.
标识测试成功(PASSED) - pytest 使用
F
标识测试失败(FAILED)
3、编写原则
用Pytest写用例时候,一定要按照下面的规则去写,否则不符合规则的测试用例是不会执行的
- 文件名以 test_*.py 文件和 *_test.py
- 以test_开头的函数
- 以Test开头的类,不能包含__init__方法
- 以test_开头的类里面的方法
- 所有的包 package 必须要有__init__.py文件
4、运行方式
以前文test.py
测试文件举例
(1) 主函数方式运行:
指定运行文件:pytest.main(['-s','test.py'])
注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest.main()
运行。因为pytest.main()
会运行当前目录下所有以test_开头或者以_test结尾的文件。
(2) 命令行方式运行
点开Pycharm左下角,在Terminal打开当面目录下的命令行窗口,或者windows用户也可直接打开CMD命令行窗口,输入命令执行:pytest test.py
注意:如果py文件是以test_开头或者以_test结尾则可以使用pytest命令运行,因为pytest会运行当前目录下所有以test_开头或者以_test结尾的文件。
5、运行参数说明
-s
显示打印内容
如:pytest test.py -s
等价于:pytest.main(['-s','test.py'])
::
指定测试用例运行
运行函数:如:pytest pytest-demo.py::test_01
等价于:pytest.main(['-s','test.py::test01'])
运行类中方法:如:pytest test.py::TestCase::test_03
等价于:pytest.main(['-s', 'test.py::TestCase::test_03'])
–html=路径/report.html
生成xml/html格式测试报告(需要先安装pytest-html)
如:pytest pytest-demp.py --html-./report.html
等价于:pytest.main(['-s','test.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 test.py -n 2
等价于:pytest.main(['-s','pytest-demo.py','-n=2'])
-x
遇到错误时停止测试 如:pytest test.py -x--maxfail=num
,当用例错误个数达到指定数量时,停止测试 如:pytest test.py —maxfail=3-k
匹配用例名称 ,执行测试用例名称包含关键字
的所有用例 如:pytest test.py -k 关键字 排除某些用例 如:pytest test.py -k 'not 关键字' 或者关系的某些用例 如:pytest test.py -k '关键字A or 关键字B'