• 【Pytest01】全网最全最新的Pytest框架快速入门


     

    一、Pytest简介
    pytest是一个非常成熟的全功能的Python测试框架,主要有一下几个特点:
    1.简单灵活,容易上手,支持参数化
    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框架基础应用
    pytest运行函数时和运行类里面的方法情况如下:

    import pytest
      def test01():
        print('测试用例一')
      def abcd():
        print('测试用例二')
    
    class TestCase:
      def test_03(self):
        print('测试用例三')
      def defg(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开头的模块文件。

    如果你此文你也有同感,如果你觉得此文对你有帮助,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入:

    软件测试技术群:695458161,群里发放的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

    作者:来自公众号:软测之家
    出处:https://www.cnblogs.com/csmashang/p/12513587.html
    欢迎转载,但未经作者同意请保留此段声明,并在文章页面明显位置给出原文链接。

    笔者来自公众号:软测之家 软件测试技术交流群:695458161
  • 相关阅读:
    音频,视频简单运用
    转载:Linux Used内存到底到哪里去了?
    shell awk统计重复个数
    Java中的单例模式
    Grub启动配置文件
    C语言实现全排列
    C语言缓冲区清空
    c语言内存对齐(1)
    防盗链原理
    C语言内存对齐(2)
  • 原文地址:https://www.cnblogs.com/csmashang/p/12513587.html
Copyright © 2020-2023  润新知