首页 > 其他分享 >Pytest

Pytest

时间:2023-05-31 14:26:06浏览次数:42  
标签:Pytest py vs pytest testcase 测试用例 test

pytest
1.插件
pytest-html 生成html格式的自动化测试报告
pytest --html=report/report.html test_sdk2_1.py
pytest-xdist 测试用例分布式执行,多CPU分发
pytest-ordering 用于改变测试用例的执行顺寻
pytest-rerunfailures 用例失败后重跑
allure-pytest 用于生成美观的测试报告

2.规则和基础应用
1.模块名必须以test_开头或者_test结尾
2.测试类必须以Test开头,并且不能有init方法
3.测试方法必须以test开头

3.pytest测试用例的运行方式
1.主函数模式
1.运行所有:pytest.main()
2.指定模块:pytest.main(['-vs','test_login.py])
3.指定目录:pytest.main(['-vs','/interface_testcase')
4.通过nodeid指定用例运行,noceid由模块名,分隔符,类名,方法名,函数名组成
pytest.main(['-vs','./interface_testcase/test_inteface.py::test_04_func'])
pytest.main(['-vs','./interface_testcase/test_inteface.py::Testinterface::test_04_func'])
2.命令行模式
1.运行所有:pytest
2.指定模块:pytest -vs test_login.py
3.指定目录:pytest -vs ./interface_testcase
4.指定目录:pytest -vs ./interface_testcase/test_inteface.py::test_04_func
3.通过读取pytest.ini配置文件运行
pytest.ini这个文件它是pytest单元测试框架的核心配置文件。
1.位置:一般放在项目的根目录
2.编码,必须是ANSI,可以用notpad++修改编码格式。
3.作用:改变pytest的默认行为
4.运行的规则:不管是主函数模式,还是命令行模式,都会取读取这个配置
[pytest]
addopts=-vs #命令行的参数,用空格分隔
testpaths = /testcase #测试用例的路径
python_files #模块名的规则
python_classes = Test* #类名的规则
python_functions = test #方法名的规则
参数详解:
-s:表示输出调试信息,包括print打印的信息
-v:显示更详细的信息
-vs:这两个参数一起用
-n:支持多线程或者分布式运行
--reruns NUM:失败用例重跑
-x:只要有一个报错,测试用例停止执行
--maxfail=2 出现两个用例失败就停止
-k:根据测试用例的部分字符串指定测试用例 pytest -vs ./testcase -k "ao"

4.pytest测试用例的执行顺序
1.unittest ascii 的大小来绝对的执行顺寻
2.pytest默认顺序是按照从上往下
2.使用装饰器可以指定case的执行顺序
@pytest.mark.run(order=1)
Order 是几就第几个执行

5.如何分组执行
smoke:冒烟用例

6.pytest跳过测试用例
1.无条件跳过
@pytest.mark.skip(reason="")
2.有条件跳过
@pytest.mark.skipif(age>=18,reason="")

7.初始化与结束时
类中
setup_class() 初始化
teardown_class() case结束时执行

标签:Pytest,py,vs,pytest,testcase,测试用例,test
From: https://www.cnblogs.com/DragonY/p/17445958.html

相关文章

  • Pytest - Fixture(10) - 测试用例传参给Fixture
    Pytest-测试用例传参给Fixture大多数时候我们在fixture封装的是登陆、获取cookie等操作,但是一个系统可能不止一个用户,有多个用户;在写测试用例的时候,如何告诉fixture我们需要登录哪个用户?可以通过测试用例给fixture传递参数,指定登陆用户账户信息。传单个参数fi......
  • Pytest - Fixture(9) - Fixture传参给测试用例
    Pytest-Fixture传参给测试用例如果想要依赖fixture传递参数给测试用例,可以通过yield或者return来返回参数;yield:实现setup和teardown,并将参数传递给测试用例;return:仅实现setup,并将参数传递给测试用例而已;传单个参数return传递单个参数:test_py.pyimpo......
  • Pytest - Fixture(8) - 作用域依赖关系
    Pytest-作用域依赖关系添加了@pytest.fixture,如果fixture还想依赖其他fixture,需要用函数传参的方式:当一个函数请求另一个函数时,首先执行另一个函数。如果函数b请求函数a,函数a将首先执行,因为b依赖于a,没有a就无法运行。即使b不需要a的结果,它仍然可以......
  • Pytest - Fixture(7) - 作用域执行顺序
    Pytest-作用域执行顺序如果有多个、不同作用域的需要执行,要弄清楚它们将执行的顺序;pytest首先执行范围更高的fixtrue;在请求fixture函数中,先执行较高作用域范围的fixture(session,package,module);再执行在较低作用域的fixture(class,function);test_py.pyimportpyte......
  • pytest从入门到精通笔记
    一、pytest简介pytest是一个非常成熟的全功能的Python测试框架,比unittest更灵活,容易上手。主要有以下几个特点:1.简单灵活,容易上手2.支持参数化3.能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)4.pytest具......
  • Pytest - Fixture(6) - 作用域混用/执行顺序/依赖关系
    Pytest-Fixture作用域混用若测试用例调用多个不同级别的作用域,都会同时生效:conftest.pyimportpytest"""会话级别fixture,作用域当前目录"""@pytest.fixture(scope="session")deflogin_session():"""作用于整个py文件"""pr......
  • pytest
    一、web自动化内容UI-userinterfaceweb网页、客户端(PC,app)1、pytest2、seleniumselenium介绍、元素定位、元素操作python+selenium:框架:PageObject模式优化和封装-selenium二次封装、失败截图、执行过程输出、异常信息输出selenium原理appium##################......
  • Pytest - Fixture(5) - 作用域(scope)
    Pytest-Fixture作用域(scope)之前讲过,fixture里面有个scop参数,这个参数就是填写fixture作用域的;function:每一个函数或方法都会调用;class:每一个类调用一次,一个类中可以有多个方法;module:每一个.py文件调用一次,该文件内又有多个function和class;session:是多个文......
  • Pytest - Fixture(3) - yield遇到异常
    Pytest-yield遇到异常如果yield前面的代码,即setup部分已经抛出异常了,则不会执行yield后面的teardown内容;如果测试用例抛出异常,yield后面的teardown内容还是会正常执行;test_py.pyimportpytest#配置自动运行的[email protected](scope="function",autouse=Tr......
  • Pytest - Fixture(2) - 实现setup和teardown(yield)
    Fixture实现setup和teardown(yield)用fixture实现teardown并不是一个独立的函数,而是用yield函数来开启teardown操作;具体yield是什么,可以去度娘一下~test_py.pyimportpytest#配置自动运行的[email protected](scope="function",autouse=True)defo......