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

1439 篇文章 61 订阅
1352 篇文章 53 订阅

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开头

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

4.pytest的安装

  • pytest安装使用pip安装即可

#安装pytest
pip install pytest

#验证安装是否成功
pytest --version
  • Pycharm运行模式设置

5.pytest中的断言

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

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

6.pytest常用运行参数

pytest执行命令如下:

创建test_demo2.py文件,内容下

import pytest

def test_001():
    print('aaaaaaaaaaaa')
    pass
class Test_001:
    def test_a_001(self):
        pass

if __name__ == '__main__':
    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文件具体内容如下:

[pytest]
;-s:用于显示用例中print()打印信息到控制台
;-v:用于显示用例执行的具体执行信息
;-k=字符串:用于显示包含指定字符串的用例
;-q:简化输出信息
;-x:如果出现一条测试用例失败,则退出测试
;-l:测试用例失败时追踪堆栈信息,所有局部变量及其值都会显示出来
;-m=标记:执行标记的用例,一般不建议直接在addopts键下中跑,可以单独使用markers键下配置
;-n=数字/auto:多线程运行用例,指定使用几个进程跑,如果未auto会自动匹配机器的CPU逻辑核数跑
;--maxfail=num:设置测试用例失败的阀值,失败的用例数超过阀值,测试执行结束
;--reruns=失败重跑次数,--reruns-delay=间隔秒数:失败重跑设置
;--tb=style,style的值可以为no,line,short,no:不打印失败信息,line:一行显示错误信息,short:简短显示错误信息
;--html=指定路径/报告名称.html:生成pytest-html报告
;要注释常用操作行为,可以在操作选项前面加上;   如下面的;-n=auto

;addopts:配置命令行选项
addopts = -s
          -v
          -l
          ;-m=smoke
          ;-n=auto
          --tb=short
          --reruns=3
          --reruns-delay=2
          --html=./report/html_report.html



;testpaths:读取测试用例的起始文件夹,多个路径用空格分隔。注意:这些目录下不能出现相同文件名,否则会报错
testpaths = ./testcases

;norecursedirs = .* venv test_001 *.egg dist build:指定不允许对应目录下的测试用例,当与testpaths目录一致时,以testpaths目录为主
norecursedirs = .* venv demo *.egg dist build

;--------------下面一般不建议写入配置文件,因为测试用例一般是批量执行的--------------------------------
;python_files:设置读取测试用例文件名的规则,运行指定文件名下的用例,可以改变文件名称,如:aaa.py
;python_files = test_*.py   

;python_files:设置读取测试用例类的规则,运行指定类名下的用例,可以改变文件名称,如:Beeee*
;python_Class = Test*        

;python_functions:设置读取测试用例方法的规则,运行指定测试用例名,可以改变文件名称,如:abcd*
;python_functions = test     
;--------------------------------------------------------------------------------------------------

;markers:注册指定的标记,用于测试用例中去使用,如果测试用例使用未注册的标记,会给出警告
markers =
    smoke : 冒烟测试用例
    aaaa : 新增其他
    ssss : XXXXXXXXXX

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


资源分享

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值