首页 > 其他分享 >1 Pytest测试框架入门篇

1 Pytest测试框架入门篇

时间:2023-02-22 17:11:24浏览次数:44  
标签:框架 用例 vs pytest testcase 入门篇 Pytest test 测试用例

1 pytest简介

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

  • pytest可以和selenium,requests,appium结合实现web自动化,接口自动化,app自动化

  • pytest可以实现测试用例的跳过以及returns失败用例重试

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

  • pytest可以和jenkins持续集成

  • pytest有很多非常强大的插件,并且这些插件能够实现很多实用的操作

    • pytest

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

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

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

    • pytest- rerunfailures (用例失败后重跑)

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

2 pytest规则

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

  • 测试类必须以Test开头,并且不能有init方法

  • 测试方法必须以test开头

3 运行方式

  • 主函数模式

    • 运行所有:pytest.main()

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

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

    • 通过nodeId指定用例运行:nodeId由模块名、分隔符、类名、方法名、函数名组成 ( pytest.main(['-vs', './interface_testcase/interface_testcase.py::TestCase::test_01_func']) 

  • 命令行模式

    • 运行所有:pytest

    • 指定模块:pytest -vs test_login.py

    • 指定目录:pytest -vs ./interface_testcase

    • 通过nodeId指定用例运行:pytest -vs ./interface_testcase/interface_testcase.py::TestCase::test_01_func

参数详解:

-s:输出调试信息,包括print打印的信息

-v:显示更详细的信息

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

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

--reruns NUM:失败用例重跑

-x:只要有一个用例报错就停止

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

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

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

    • 位置:一般放在项目的根目录

    • 编码:必须是ANSI,可以使用notpad++修改编码格式

    • 作用:改变pytest默认的行为(如类名、方法名可以不以test开头)

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

      • [pytest]

      • addopts = -vs #命令行的参数,用空格分隔

      • testpaths = ./testcase # 测试用例的路径

      • python_files = test_*.py # 模块名的规则

      • python_classes = Test* # 类名的规则

      • python_functions = test # 方法名的规则

      • markers = 

smoke:冒烟用例

usermanage:用户管理模块

productmanage:商品管理模块

(在类方法前调用@pytest.mark.smoke即可使用冒烟用例,执行冒烟用例使用pytest -m "smoke",同时使用多个模块使用pytest -m "A or B or C")

4 pytest执行测试用例的顺序

pytest:默认从上到下

改变默认的执行顺序:使用mark标记,如@pytest.mark.run(order=3)

5 pytest跳过测试用例

无条件:@pytest.mark.skip(reason="跳过原因...")

有条件:  @pytest.mark.skip(age>=18,reason="满足已成年的判断,所以跳过了...")

 

标签:框架,用例,vs,pytest,testcase,入门篇,Pytest,test,测试用例
From: https://www.cnblogs.com/dyl0/p/17145089.html

相关文章

  • 2 Pytest测试框架升华篇
    pytest框架实现一些前后置(固件、夹具)的处理,常用三种一、setup/teardown,setup_class/teardown_class全部classTestClass:#这个在所有的用例之前只执行一次d......
  • python之路75 vue框架 vue3介绍、创建项目、setup函数、ref和reactive、计算属性和监
    vue3介绍vue3的变化1.性能的提升打包大小减少41%初次渲染快55%,更新渲染快133%内存减少54%2.源码的升级使用Proxy代替defineProp......
  • Pytest学习笔记
    参考链接1、pytest执行用例规则目录下执行所有的用例pytest//orpy.test执行单独一个pytest模块pytestfileName.py运行某个模块里面的某个类pytestfile......
  • 分布式任务调度框架xxl-job入门(Cron表达式、环境搭建、整合SpringBoot、广播任务与动
    (目录)xxl-Job分布式任务调度1.概述1.1什么是任务调度我们可以先思考一下业务场景的解决方案:某电商系统需要在每天上午10点,下午3点,晚上8点发放一批优惠券。某银行......
  • .net core abp框架ddd分层如何做ef core迁移和恢复迁移
    一、从模型迁移到数据库1、visualstudio启动项里选择对应的项目,修改appsettings.json里的数据库链接(决定迁移到那个服务器以及数据库)2、打开Nuget管理控制台,执行Add-Mi......
  • 推荐一个分布式单点登录框架XXL-SSO!
    有关单点登录(SSO)之前有写过两篇文章一文读懂JWT!看完这篇不能再说不懂SSO原理了!如果说XXL-JOB你可能并不陌生,它是非常火爆的一个分布式任务调度平台。但其实在该......
  • MapReduce框架原理
    原理一:切片与MapTask并行度决定机制MapTask之前了解到了,他是在分布式程序在map阶段的一个进程,管理之一个map任务类似于一个master。那么什么是切片?说起切片,很明......
  • 28-DRF框架-搭建环境开发restful接口
    #将程序中的一个数据结构类型转换为其他格式(字典、JSON、XML等),例如将Django中的模型类对象装换为JSON字符串,这个转换过程我们称为序列化#将其他格式(字典、JSON、XML等)转......
  • Vue第三方框架之ElementUi
    目录Vue第三方框架之ElementUi1.热门组件库2.elementui的使用Vue第三方框架之ElementUi1.热门组件库使用第三方插件插件和库:https://github.com/vuejs/awesome-vu......
  • Mybatis Plus 框架项目落地实践总结
    在使用了MybatisPlus框架进行项目重构之后,关于如何更好的利用Mybatisplus。在此做一些总结供大家参考。主要总结了以下这几个方面的实践。基础设计BaseEntity逻辑......