• 一文3000字解析Pytest单元测试框架【保姆级教程】


    1.自动化主流测试框架解释

    当前业界基于python语言的自动化框架主要包括:Unittest,Pytest这2种,其中:Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架;Pytest是Python的另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。

    2.Pytest与Unittest的区别对比

    3.Pytest下测试用例规则

    尽管pytest下关于测试用例的方法、类、文件可以进行搜集规则的配置,但是默认的写法是:1.pytest将在当前目录及其子目录中运行所有格式为test_.py或者_test.py文件
    2.测试方法/测试函数 默认必须是test开头
    3.测试类必须是Test开头

    1. 4. 测试类不能有构造方法 __init__
    2. 希望大家可以默认使用上面的规则,与pytest默认的规则一致,以免产生其他问题

    4.pytest的安装

    • pytest安装使用pip安装即可

    1. #安装pytest
    2. pip install pytest
    3. #验证安装是否成功
    4. pytest --version
    • Pycharm运行模式设置

    5.pytest中的断言

    pytest中的断言使用assert结合python中的运算符进行断言,常见的断言有:

    1. • assert xx :判断 xx 为真   is Ture
    2. • assert not xx :判断 xx 不为真   is not True  /  is False
    3. • assert a in b :判断 b 包含 a
    4. • assert a  not  in b :判断 b不包含 a
    5. • assert a == b :判断 a 等于 b
    6. • assert a != b :判断 a 不等于 b
    7. • assert a >= b :判断 a 大于等于 b
    8. • assert a <= b :判断 a 小于等于 b
    9. • assert a > b :判断 a 大于 b
    10. • assert a < b :判断 a 小于 b
    11. 其中 还可以在条件中加上  or  (或者)、and( 和)的条件 。

    6.pytest常用运行参数

    pytest执行命令如下:

    创建test_demo2.py文件,内容下

    1. import pytest
    2. def test_001():
    3.     print('aaaaaaaaaaaa')
    4.     pass
    5. class Test_001:
    6.     def test_a_001(self):
    7.         pass
    8. if __name__ == '__main__':
    9.     pytest.main() 
    • 不加任何参数,执行的命令:pytest.main(),显示最简单的运行结果

    • -v:用于显示用例执行的具体执行信息

    • -s:用于显示用例中print()打印信息到控制台

    • -k=字符串:用于显示包含指定字符串的用例

    • -q:简化输出信息

    • -x:如果出现一条测试用例失败,则退出测试

    • '目录路径/文件名::类名::方法名',指定目录以及特定类或方法执行

    • --maxfail=num:设置测试用例失败的阀值,失败的用例数超过阀值,测试执行结束

    • -m=标记:执行标记的用例

    • -n=数字/auto:多线程运行用例,指定使用几个进程跑,如果未指定几个进程,会自动匹配机器的CPU逻辑核数跑

    • --reruns=失败重跑次数,--reruns-delay=间隔秒数:失败重跑设置

    • --html=指定路径/报告名称.html:生成pytest-html报告

    报告内容如下:

    7.pytest.ini配置文件的使用

    平时在执行的使用临时添加这些常用运行产生可能会记不住,不便于使用;通常可以将这些常用参数写入pytest.ini(文件名称及类型不能变更)配置文件中,让pytest框架自动识别里面的执行配置,方便使用的使用,想要控制用例的执行,只需要修改参数即可,一般建议在项目目录的根目录下创建pytest.ini文件
    a.如果需要在pytest.ini文件中写中文的注释,有可能会乱码,解决方案如下:
    新建pytest.ini文件后,选择文件,然后点击Pycharm上的file,找到File Properties,选择下面的File Encoding,在文件编码语言中选择GBK,点击convert即可
    b.pytestl.ini文件具体内容如下:

    1. [pytest]
    2. ;-s:用于显示用例中print()打印信息到控制台
    3. ;-v:用于显示用例执行的具体执行信息
    4. ;-k=字符串:用于显示包含指定字符串的用例
    5. ;-q:简化输出信息
    6. ;-x:如果出现一条测试用例失败,则退出测试
    7. ;-l:测试用例失败时追踪堆栈信息,所有局部变量及其值都会显示出来
    8. ;-m=标记:执行标记的用例,一般不建议直接在addopts键下中跑,可以单独使用markers键下配置
    9. ;-n=数字/auto:多线程运行用例,指定使用几个进程跑,如果未auto会自动匹配机器的CPU逻辑核数跑
    10. ;--maxfail=num:设置测试用例失败的阀值,失败的用例数超过阀值,测试执行结束
    11. ;--reruns=失败重跑次数,--reruns-delay=间隔秒数:失败重跑设置
    12. ;--tb=style,style的值可以为no,line,short,no:不打印失败信息,line:一行显示错误信息,short:简短显示错误信息
    13. ;--html=指定路径/报告名称.html:生成pytest-html报告
    14. ;要注释常用操作行为,可以在操作选项前面加上;   如下面的;-n=auto
    15. ;addopts:配置命令行选项
    16. addopts = -s
    17.           -v
    18.           -l
    19.           ;-m=smoke
    20.           ;-n=auto
    21.           --tb=short
    22.           --reruns=3
    23.           --reruns-delay=2
    24.           --html=./report/html_report.html
    25. ;testpaths:读取测试用例的起始文件夹,多个路径用空格分隔。注意:这些目录下不能出现相同文件名,否则会报错
    26. testpaths = ./testcases
    27. ;norecursedirs = .* venv test_001 *.egg dist build:指定不允许对应目录下的测试用例,当与testpaths目录一致时,以testpaths目录为主
    28. norecursedirs = .* venv demo *.egg dist build
    29. ;--------------下面一般不建议写入配置文件,因为测试用例一般是批量执行的--------------------------------
    30. ;python_files:设置读取测试用例文件名的规则,运行指定文件名下的用例,可以改变文件名称,如:aaa.py
    31. ;python_files = test_*.py   
    32. ;python_files:设置读取测试用例类的规则,运行指定类名下的用例,可以改变文件名称,如:Beeee*
    33. ;python_Class = Test*        
    34. ;python_functions:设置读取测试用例方法的规则,运行指定测试用例名,可以改变文件名称,如:abcd*
    35. ;python_functions = test     
    36. ;--------------------------------------------------------------------------------------------------
    37. ;markers:注册指定的标记,用于测试用例中去使用,如果测试用例使用未注册的标记,会给出警告
    38. markers =
    39.     smoke : 冒烟测试用例
    40.     aaaa : 新增其他
    41.     ssss : XXXXXXXXXX

    配置好后,后续使用pytest执行测试用例,只需要执行:pytest.main()即可


    资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    ​这些资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

  • 相关阅读:
    C/C++ 单元自动化测试解决方案实践
    Java项目:SSM在线租房售房平台多城市版本
    iNavFlight之MSP DJI协议天空端请求报文
    Docker容器化技术(使用Dockerfile制作镜像)
    【设计模式】访问者模式
    11. 盛最多水的容器
    三、Spring Boot 整合视图层技术
    02-MySQL库和表的操作
    docker 搭建私有仓库并发布私有镜像
    Three Ammo实现物理作用实例
  • 原文地址:https://blog.csdn.net/jiangjunsss/article/details/126185153