当前业界基于python语言的自动化框架主要包括:Unittest,Pytest这2种,其中:Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架;Pytest是Python的另一个第三方单元测试库。它的目的是让单元测试变得更容易,并且也能扩展到支持应用层面复杂的功能测试。
尽管pytest下关于测试用例的方法、类、文件可以进行搜集规则的配置,但是默认的写法是:1.pytest将在当前目录及其子目录中运行所有格式为test_.py或者_test.py文件
2.测试方法/测试函数 默认必须是test开头
3.测试类必须是Test开头
- 4. 测试类不能有构造方法 __init__
- 希望大家可以默认使用上面的规则,与pytest默认的规则一致,以免产生其他问题
pytest安装使用pip安装即可
- #安装pytest
- pip install pytest
-
- #验证安装是否成功
- pytest --version
Pycharm运行模式设置
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( 和)的条件 。
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报告
报告内容如下:
平时在执行的使用临时添加这些常用运行产生可能会记不住,不便于使用;通常可以将这些常用参数写入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()即可
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….