pytest

一、pytest简介

  1. pytest是一个非常成熟的python的单元框架,比unittes更灵活,容易上手。
  2. pytest可以和selenium,requests,appium结合实现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’,‘./testcase’])
    (4) 通过nodeid指定用例运行 nodeid由模块名,分隔符,类名,方法名,函数名组成。
    pytest.main([‘-vs’,‘./testcase/test_login.py::TestInterface::test_03_login’])

  2. 命令行模式
    (1) 运行所有: pytest
    (2) 指定模块: pytest -vs test_login.py
    (3) 指定目录: pytest -vs ./testcase
    (4) 通过nodeid指定用例运行 nodeid由模块名,分隔符,类名,方法名,函数名组成。
    pytest -vs ./testcase/test_login.py::TestInterface::test_03_login

     参数详解:
     -s: 表示输出调试信息,包括print打印的信息
     -v:  显示更详细的信息
     -vs: 这2个参数一起用
     -n :  分布式运行测试用例
     --reruns=num:     失败用例重跑几次
     -- maxfail =num:  出现几次失败就停止
     -k: 根据测试用例的部分字符串指定测试用例
     -v: 类名+方法名
     --html :生成html的测试报告    --html ./report/report.html
    
  3. 通过读取pytest.ini配置文件运行。
    pytest.ini这个文件它是pytest单元测试框架的核心配置文件。
    1. 位置:一般放在项目的根目录。
    2. 编码:必须是ANSI ,可以使用notpad++修改编码格式。
    3. 作用:修改pytest默认的行为。
    4. 运行的规则;不管是主函数模式运行,命令行模式运行,都会读取这个配置文件。
    【pytest】
    addopts = -vs #命令行的参数,用空格分隔。
    testpaths = ./testcase #测试用例的路径
    python_files = test_*.py #模块名的规则
    python_classes = Test* #类名的规则
    python_functions = test #方法名的规则
    markers =
    smoke :“冒烟用例”
    #分组

四、pytest执行测试用例的顺序

  1. unittest: ascll的大小来决定执行的顺序
  2. pytest:默认从上到下
  3. 改变默认的执行顺序 : 使用 @pytest.mark.run(order=3)

五、如何分组执行

  1. smoke :冒烟用例,分布在各个模块里面
  2. pytest -m “smoke”
  3. pytest -m “smoke or usermanage or productmanage”

六、pytest跳过测试用例

  1. 无条件跳过
    @pytest.mark.skip(reason=“测试跳过1”)

  2. 有条件跳过
    @pytest.mark.skipif(age>=18,reason=“测试跳过2”)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值