pytest 其实是一个单元测试框架
解释: 在软件开发过程中,针对最小的单位(函数,方法)进行正确性的检查测试
比如 java: junit 或者 testng
python: unittest 或者 pytest
举例:1.测试发现(从某个文件或多个文件中找到需要执行的测试用例)
2.测试执行(安装一定的顺序和规则去执行,生成结果)
3.测试断言(通过断言判断预期结果和实际结果的差异)
4.测试报告(统计测试进度,耗时,通过率,以及测试过程详情,生成测试报告)
单元测试框架和自动化测试框架有什么关系
什么是自动化测试框架
解释: 自动化框架就是封装一些自动化所使用的基础模块,测试中使用到的第三方工具模块,以及设计测试用例书写的项目架构模块(设计模式),最后使用单元测试框架进行产出
自动化测试框架的作用
1.提高测试效率,降低维护成本
2.减少人工干预,提高测试准确性,增加代码的重用性
3.核心思想是让不懂代码的人也能够通过这个框架去实现自动化测试
pytest功能
1.pytest+selenium 或 requests 或 appium
2.pytest可以实现测试用例的跳过以及reruns失败用例重试
3.pytest可以和allure生成非常美观的测试报告
4.pytest可以和jenkins持续集成
5.pytest有很多非常强大的插件,在自动化过程中能实现很多实用的操作
pytest
pytest-html(生成html格式的自动化报告)
pytest-xdist (测试用例分布式执行,多cpu分发)
pytest-ordering (改变测试用例的执行顺序)
pytest-rerunfailures (用于用例失败后的重跑)
allure-pytest(用于生成美观的测试报告)
安装:创建一个文件,将需要的安装包全部写在文件内。使用pip install -r 文件名
使用pytest,默认的测试用例的规则以及基础使用
1.模块名必须以test_开头 或者 _test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试用例必须以test开头
使用pytest的运行方式
1.主函数模式运行
运行所有:
pytest.main()
指定模块:
3.可以指定目录执行 pytest.main(['vs', ' 模块名 '])
2.命令行模式运行
运行所有:E:\pyt_obj>pytest
参数详解:
输出调试信息,包括print打印出来的信息
输出详细的信息,包括类名等
-n: 支持多线程或者分布式运行
--reruns NUM 失败用例重跑,只要有失败会多跑NUM次
失败重跑实例:
--maxfail =2 出现两个用例失败就停止
-k : 根据测试用例的部分字符串去指定用例 pytest -vs 目录 -k "模糊匹配"
解释:主函数模式运行
解释:命令行模式运行
3.通过读取pytest.ini配置文件运行。
pytest的执行测试用顺序:
unittest: ascll的大小来决定的执行顺序
pytest: 默认从上到下。
如果不想按顺序执行:order = 1 第一个执行 通过mark标记 则改变默认执行顺序
如何分组执行 (冒烟等)
smoke:冒烟测试用例,分布在各个模块中,可以分模块分组等。使用mark
第一步:给不同组别的测试用例增加mark.指定名称
第二步:给pytest.ini中增加markers=指定名称:备注
第三步 -m "指定名称"
番外:如果想执行多组,可以用 or 增加不同模块的用例执行