• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

详细从入门到精通,pytest自动化测试框架教程一

武飞扬头像
百度测试开发
帮助1


前言

pytest框架的几个重要的特点:

简单易用的语法:Pytest使用类似于Python自带的assert语法来编写用例,例如assert a == b,assert not a等,没有特定的断言方法要记忆。

Pytest自动化测试框架:https://www.bilibili.com/video/BV18K411m7FH/

自动发现测试:Pytest通过在文件名和函数名中查找test关键字并且按照名称规则来自动发现测试模块和测试函数,将测试模块转换为测试集。

灵活的测试执行:Pytest可以在多个进程或者多线程中并发执行测试用例,可以与版本控制系统交互,可以快速过滤测试用例并跳过无需执行的用例等。

插件机制:Pytest具有强大的插件框架,可以通过插件集成其他库和工具。例如,pytest-cov插件可以为我们提供覆盖测试数据,pytest-html可以为我们生成漂亮的HTML测试报告等。

环境安装

pytest是python中的第三方库,使用之前需要先安装。
在命令行中运行以下安装命令 :

pip insatll pytest

检查安装是否成功以及安装的版本,命令行命令如下:

pytest --version

执行上述命令,能够输出版本信息,那就说明安装成功了。

用例编写

当我们通过pytest执行用例时,pytest会自动递归遍历执行路径下所有的目录,根据pytest中默认用例的识别的规则,自动收集测试用例。首先了解一下pytest收集用例时默认的用例识别规则。

1、默认的用例识别的规则
用例文件:所有文件名为 test_ 开头 或者 _test 开头的文件会被识别为用例文件。
用例类:测试文件中每个Test开头的类就是一个测试用例类。
测试用例:测试类中每个test开头的方法就是一条测试用例,测试文件中每个test开头的函数也是一条测试用例。

备注:上述默认的用例查找规则,可在pytest的配置文件进行修改(后续章节会详细介绍配置文件的使用)

另外pytest兼容unittest,以unittest的用例编写规范写的用例,pytest都能够识别出来

2、函数形式编写用例
规则:用例方法名以test开头即可

# \testcases\test_demo1.py

def test_demo():
    assert 100 == 100

使用命令 pytest 就可以执行测试函数,输出结果如下:

C:\testcases>pytest 
======================test session starts ======================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins:  testreport-1.1.2
collected 1 item                                                           
test_demo1.py .    [100%]
====================== 1 passed in 0.26s ======================

3、以类的形式编写用例
规则: 测试类命名以Test开头,用例方法以test开头

# test_demo2.py
class TestDome:

    def test_demo1(self):
        assert 11 == 11

    def test_demo(self):
        assert 22 == 21

命令pytest运行上述用例,结果如下:

====================== test session starts ======================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins:  testreport-1.1.2
collected 2 items                                                                   
test_demo1.py .F                  [100%]
====================== FAILURES ======================
___________ TestDome.test_demo ____________
self = <test_demo1.TestDome object at 0x0445F450>
    def test_demo(self):
>       assert 22 == 21
E       assert 22 == 21
test_demo1.py:25: AssertionError
====================== short test summary info =======================
FAILED test_demo1.py::TestDome::test_demo - assert 22 == 21
====================== 1 failed, 1 passed in 0.53s ======================
学新通

上面的运行结果可以看出来,一条用例执行通过,一条执行失败

执行测试

在上面我们使用的是 pytest这个命令去执行测试用例。关于pytest执行测试,有两种方式,一种是命令行通过pytest这个命令执行,另外在代码中可以通过pytest.main()这个方法来执行测试。接下来就和大家分别详细的介绍一下pytest执行测试的方式和常用的参数

1、执行参数
测试用例

# 测试用例
class TestDome:

    def test_demo1(self):
        print('----测试用例执行-----------')
        assert 11 == 11

参数 -v : 显示测试的详细参数信息

C:\testcases>pytest -v
========================== test session starts ==========================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0 
cachedir: .pytest_cache
rootdir: C:\git_project\pytest-report-me-main\testcases
plugins: testreport-1.1.2
collected 1 item                                                                         test_demo1.py::TestDome::test_demo1 PASSED          [100%]
========================== 1 passed in 0.27s ==========================

参数 -s: 显示测试执行的输出信息

C:\testcases>pytest -s
=========================== test session starts ===========================
platform win32 -- Python 3.7.3, pytest-5.4.2, py-1.8.0, pluggy-0.13.0
rootdir: C:\testcases
plugins: testreport-1.1.2
collected 1 item     
test_demo1.py::TestDome::test_demo1 ----测试用例执行---输出1--------
----测试用例执行---输出2--------
PASSED
=========================== 1 passed in 0.28s ===========================

2、pytest.main执行的参数传递
pytest.main方法执行测试参数传递方式:

所以的参数放在列表中,每个参数就是列表中的一个元素

pytest.main(['-v','-s'])

详细的参数可以使用命令 pytest -h 查看

3、指定执行的测试目录
命令 pytest 测试目录路径

pytest testcase/

pytest会执行指定目录路径下所有的测试用例

4、指定执行的测试文件
命令 pytest 测试文件路径

pytest testcase/test_demo1.py

pytest会执行指定测试文件中下所有的测试用例

5、指定执行的测试类
命令 pytest 测试文件::测试类

pytest testcase/test_demo1.py::TestClass

pytest会执行指定测试类里面所有的测试用例

6、指定执行的测试用例
命令 pytest 测试文件::测试类::测试方法

pytest testcase/test_demo1.py::TestClass::test_method
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

学新通

二、接口自动化项目实战

学新通

三、Web自动化项目实战

学新通

四、App自动化项目实战

学新通

五、一线大厂简历

学新通

六、测试开发DevOps体系

学新通

七、常用自动化测试工具

学新通

八、JMeter性能测试

学新通

九、总结(尾部小惊喜)

只要坚持不懈,就会有所成就。失败不是终点,而是成功之路上必经的一站。每一份努力都值得尊重,因为它们铸就了你的人生。创造属于你自己的未来,把握当下,莫让遗憾留存。

只有付出,才能有回报;只有坚持,才能看到成果。无论前方多少艰难险阻,都请不要放弃自己的梦想。相信自己,勇往直前,未来就在那里等着你!

只有拼搏奋斗,才能成就辉煌。不要停歇脚步,不要畏惧困难。相信自己的能力,勇往直前!成功属于那些敢于追梦、坚持不懈的人!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfjjgha
系列文章
更多 icon
同类精品
更多 icon
继续加载