pytest学习和使用 ✨2 初步使用和用例运行
Posted NoamaNelson
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest学习和使用 ✨2 初步使用和用例运行相关的知识,希望对你有一定的参考价值。
1 测试脚本
- 在
pytest_study
文件夹下创建一个test_mm.py
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2021/8/27 16:51
# 文件名称:test_mm.py
# 作用:xxx
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
def m_sum(x):
return x * (x+1)
def test_m_sum():
assert m_sum(3) == 11
- 在
pytest_study
文件夹下打开cmd直接输入pytest运行:
(venv) F:\\pytest_study>pytest
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: F:\\pytest_study
plugins: allure-pytest-2.8.12, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6, xdist-1.31.0
collected 1 item
test_mm.py F [100%]
=============================================================================== FAILURES ===============================================================================
______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():
> assert m_sum(3) == 11
E assert 12 == 11
E + where 12 = m_sum(3)
test_mm.py:13: AssertionError
======================================================================= short test summary info ========================================================================
FAILED test_mm.py::test_m_sum - assert 12 == 11
========================================================================== 1 failed in 0.07s ===========================================================================
- 发现执行失败了,是因为12不等于11,
assert
是用来进行断言的。
2 脚本分析
2.1 断言使用assert
- 从上边脚本看到断言的话使用
assert
即可,根据官网的说法是pytest断言基本都是用的assert
;
2.2 使用pytest运行用例规则
- 文件名规则:
test_*.py和*_test.py命名的函数
- 函数名规则:
以test_开头的函数
- 类的规则
test_开头的方法,不能有__init__ 方法
- python包的规则
同python一样,包需要有__init__.py文件
- 以
-q
或-quiet
参数进行静默运行函数(说白了就是结果输出简单化)
3 练习下用例运行规则
-
先在
pytest_study
目录下再新建一个test_case
包;
-
然后把之前写的第一个用例
test_mm.py
移动到这个目录下:
-
在pytest_study下执行pytest,发现是可以执行的,说明是执行了
test_case
下的test_mm.py
(venv) F:\\pytest_study>pytest
========================================================================= test session starts ==========================================================================
platform win32 -- Python 3.7.0, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: F:\\pytest_study
plugins: allure-pytest-2.8.12, cov-2.8.1, forked-1.1.3, html-2.0.1, metadata-1.8.0, ordering-0.6, xdist-1.31.0
collected 1 item
test_case\\test_mm.py F [100%]
=============================================================================== FAILURES ===============================================================================
______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():
> assert m_sum(3) == 11
E assert 12 == 11
E + where 12 = m_sum(3)
test_case\\test_mm.py:13: AssertionError
======================================================================= short test summary info ========================================================================
FAILED test_case/test_mm.py::test_m_sum - assert 12 == 11
========================================================================== 1 failed in 0.13s ===========================================================================
(venv) F:\\pytest_study>
- 使用
-q
参数来执行下,一下子少了很多输出:
(venv) F:\\pytest_study>pytest -q
F [100%]
=============================================================================== FAILURES ===============================================================================
______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():
> assert m_sum(3) == 11
E assert 12 == 11
E + where 12 = m_sum(3)
test_case\\test_mm.py:13: AssertionError
======================================================================= short test summary info ========================================================================
FAILED test_case/test_mm.py::test_m_sum - assert 12 == 11
1 failed in 0.05s
(venv) F:\\pytest_study>
- 再在
test_case
下新建一个名为test_a
的包,并在包里复制一个test_mm1.py
- 从执行结果看是ok的,那么以上都证明了文件名、包名都需要以test开头才能被执行;
(venv) F:\\pytest_study>pytest -q
FF [100%]
=============================================================================== FAILURES ===============================================================================
______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():
> assert m_sum(3) == 11
E assert 12 == 11
E + where 12 = m_sum(3)
test_case\\test_mm.py:13: AssertionError
______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():
> assert m_sum(3) == 11
E assert 12 == 11
E + where 12 = m_sum(3)
test_case\\test_a\\test_mm1.py:13: AssertionError
======================================================================= short test summary info ========================================================================
FAILED test_case/test_mm.py::test_m_sum - assert 12 == 11
FAILED test_case/test_a/test_mm1.py::test_m_sum - assert 12 == 11
2 failed in 0.20s
(venv) F:\\pytest_study>
- 我们修改下
test_mm1.py
增加一个类,如下:
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2021/8/27 16:51
# 文件名称:test_mm.py
# 作用:xxx
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson
import pytest
class TestClass:
def test_you(self):
y = "you"
assert "y" in y
def test_hai(self):
h = "hai"
assert "gg" not in h
if __name__ == '__main__':
pytest.main()
- 直接在
pytest_study
下执行pytest -q
,如下,说明类也执行到了:
(venv) F:\\pytest_study>pytest -q
... [100%]
3 passed in 0.15s
『全栈测试技术,分享,共勉,共进,提升』
以上是关于pytest学习和使用 ✨2 初步使用和用例运行的主要内容,如果未能解决你的问题,请参考以下文章
pytest文档84 - 把收集的 yaml 文件转成pytest 模块和用例