写点什么

pytest 学习和使用 2- 初步使用和用例运行

作者:虫无涯
  • 2023-03-17
    陕西
  • 本文字数:3508 字

    阅读完需:约 12 分钟

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.1rootdir: F:\pytest_studyplugins: 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.0collected 1 item
test_mm.py F [100%]
=============================================================================== FAILURES ===============================================================================______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():> assert m_sum(3) == 11E assert 12 == 11E + 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.1rootdir: F:\pytest_studyplugins: 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.0collected 1 item
test_case\test_mm.py F [100%]
=============================================================================== FAILURES ===============================================================================______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():> assert m_sum(3) == 11E assert 12 == 11E + 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 -qF                                                                                                                                                                 [100%]=============================================================================== FAILURES ===============================================================================______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():> assert m_sum(3) == 11E assert 12 == 11E + 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 == 111 failed in 0.05s
(venv) F:\pytest_study>
复制代码


  • 再在test_case下新建一个名为test_a的包,并在包里复制一个test_mm1.py


  • 从执行结果看是 ok 的,那么以上都证明了文件名、包名都需要以 test 开头才能被执行;


(venv) F:\pytest_study>pytest -qFF                                                                                                                                                                [100%]=============================================================================== FAILURES ===============================================================================______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():> assert m_sum(3) == 11E assert 12 == 11E + where 12 = m_sum(3)
test_case\test_mm.py:13: AssertionError______________________________________________________________________________ test_m_sum ______________________________________________________________________________
def test_m_sum():> assert m_sum(3) == 11E assert 12 == 11E + 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 == 11FAILED test_case/test_a/test_mm1.py::test_m_sum - assert 12 == 112 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
复制代码


发布于: 刚刚阅读数: 3
用户头像

虫无涯

关注

专注测试领域各种技术研究、分享和交流~ 2019-12-11 加入

CSDN测试领域优质创作者 | CSDN博客专家 | 阿里云专家博主 | 华为云享专家 | 51CTO专家博主

评论

发布
暂无评论
pytest学习和使用2-初步使用和用例运行_Python_虫无涯_InfoQ写作社区