python 之 pytest框架

一、pytest 单元测试框架

1、什么是单元测试,针对软件的最小单位(函数,方法,接口)进行正确性的检查测试。

2、单元测试框架(按语言分)

java : junit 和testing

python : unittest 和 pytest

3、单元测试主要是做什么呢?

(1)、测试发现:从多个文件里面去找到测试用例

(2)、测试执行:按照一定的顺序和规则去执行。并生成结果

(3)、测试判断:通过断言判断预期结果和实际结果的差异

(4)、测试报告:测试统计进度,耗时,通过率,生成测试报告

二、pytest简介

1、pytest是一个非常成熟的python的单元框架,比unittest更灵活,容易上手。

2、pytest可以和selenium,requests,applum结合实现web自动化,接口自动化,app自动化

3、pytest可以实现测试用例的跳过以及reruns失败用例重试

4、pytest可以和allure生成非常美观的测试报告

5、pytest可以和Jenkins持续集成

6、pytest有很多强大的插件,并且这些插件能够实现很多的使用的操作

例如:

pytest

pytest-xdist                -- 测试用例分布式执行,多CPU分发

pytest-ordering          -- 用于改变测试用例的执行顺序

pytest-rerunfailures   -- 用例失败后重跑

pytest-html                -- 生成html格式的自动化测试报告

allure-pytest              -- 用于生成美观的测试报告

三、使用pytest,默认的测试用例的规则以及基础应用

1、模块名必须以test_开头或者_test结尾

2、测试类必须以Test开头,并且不能用init方法

3、测试方法必须以test开头

四、pytest 测试用例的运行方式

1、主函数模式

(1)运行所有:pytest.main()

(2)指定模块:pytest.main(['-vs','test_login.py'])

(3)指定目录:pytest.main(['-vs','/interface'])

(4)通过nodeid指定用例运行:nodeid由模块名,分隔符,类名,方法名,函数名组成

pytest.main(['-vs','/interface/test_login.py:test_01'])

2、命令行模式

(1)运行所有:pytest

(2)指定模块:pytest -vs test_login.py

(3)指定目录:pytest -vs /interface

参数详解:

-s:表示输出调试信息,包含print打印的信息

-v:显示更多的信息

-vs:上面两个参数一起用

-n:支持多线程或者分布式运行测试用例

例:pytest -vs /interface/test_login.py -n 2 (分两个线程)

--reruns num:失败用例重跑(num重跑次数)

-x:表示只要一个用例报错,测试停止

--maxfail=2 出现两个用例失败停止

-k:根据测试用例的部分字符串指定测试用例

例:pytest -vs 。/interface -k "ao"

--html ./interface/interface.html:在interface目录下生成html的测试报告

3、通过读取pytest.ini配置文件运行

pytest.ini文件是pytest单元测试框架的核心配置文件

(1)、位置:一般在项目的根目录

(2)、编码:必须是ANSI,可以使用notpad++修改编码格式

(3)、作用:改变pytest默认的行为

(4)、运行的规则:不管是主函数模式运行,命令行模式也能行,都会去读取这个配置文件

例:

[pytest]
addopts = -vs --html ./report.html     -- 参数
testpaths = ./web                      -- 测试用例路径
python_files = test_*.py               -- 模块名的规则
python_classes = Test*                 -- 类名的规则
pythonn_functions = test               -- 方法名规则
markers =                              -- 标记用例
    smoke:冒烟测试                       


五、pytest 用例的执行顺序是怎么样的?
unittest 以ASCLL的大小来执行
pytest默认从上到下
改变默认执行顺序,就用mark标记
例:@pytest.mark.run(order = 3)


六、如何分组执行(冒烟,分模块执行,分接口和web执行)
smoke:猫眼用力,分布在各个模块
pytest -m "smoke"                -- 就会执行带有smoke标记的模块
pytest -m "smlke or smoke ir smoke2"     -- 执行多个


七、pytest跳过测试用例
1、无条件跳过
  @pytest.mark.skip(reason = "单纯想跳过")
2、有条件跳过
   @pytest.mark.skip(age>18,reason = "跳过年纪大于18的")

 最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值