pytest测试框架官方文档,python测试框架pytest
Pytest是什么?Python的第三方库类似于标准库unittest测试框架,但比unittest框架更简洁、更灵活、更高效地使用。
目前比较流行的测试框架,Robot FrameworkPyTestUnitTest/py unit PyTest和unittest unittestpytest,用例编写规则1)必须先导入测试文件。
2)测试类必须继承unittest。测试案例
3)测试方法必须以“test_”开头
4)测试类必须有unittest.main()方法1)测试文件名必须以“test_”开头或以“test”结尾(例如:test_ab.py)
2)测试方法必须以“测试”开始
3)测试类名以“Test”开头。默认情况下,用例被分类和执行。所有用例也可以通过加载testsuit来执行。有些用例可以通过@ pytest.zjddt用类和方法进行标记,pytest.main添加参数(-m )只能运行标记的类和方法。在用例之前和之后提供安装/拆卸,这显然只对所有用例更灵活。可以随意定制方法函数,只需添加@pytest.fixture()作为修饰器,那么修饰后的方法就可以使用ddt库进行参数化了。@ pytest . ZJ DDT . parameter ize decorator断言许多断言格式(assertEqual、assertIn、assertTrue、assertFalse)只有一个表达式assert。使用和报告都很方便。HTMLTestRunnerNew库的Pytest-HTML和allure插件重新运行失败。如果没有这个函数,pytest支持用例执行失败后重新运行。pytest-rerunfailures插件pytest的特点是简单灵活,易于使用,支持参数化。它可以支持简单的单元测试和复杂的功能测试。还可以用来做selenium/appnium等自动化测试,接口自动化测试(pytest请求)pytest有很多第三方插件,可以定制和扩展。好的比如case pytest-selenium、pytest-html、pytest-rer failures、Skip和xfail test-xdist(多CPU分布)等测试用例的处理可以很好的与jenkins的报表框架集成- allure也支持pytest安装pip安装pytest如何编写py test测试用例?1.文件名为Test_*。py或*_test.py2,以test 3开头的类,以test_ 4开头的函数,以及__init__。包里的py。
运行模式命令行,运行所有案例1和所有测试案例。
pytest
2.运行后生成测试报告。
安装pytest-html
运行pip pytest-html
pytest - html=report.html
运行指定的案例1,直接运行test_case.py文件中的所有案例。
pytest test_case01.py
2.运行test_case.py文件中TestCase类下的所有案例。
pytest case_test.py:TestCase
3.运行test_case.py文件中TestCase类下的指定案例。
pytest case _ test . py:test case:test _ case _ 002
运行多线程case来安装pytest-xdist
运行pip py test-xdist(并发进程数)
pytest -n编号
重新运行机制-命令行运行并安装pytest-rer failures。
运行pip py测试-重新运行失败。
pytest -重新运行重试-重新运行-延迟之间的延迟设置(单位:秒)pytest . main([-重新运行,,-重新运行-延迟, 5 ])pytesttest _ case 01 . py-重新运行次数
命令行参数1)-v: pytest-v可以输出用例更详细的执行信息(用例所在的文件和用例名称)2)-s: pytest-s输出用例中的调试信息(print()print)3)-m:py test-m“marks”执行一个特定的测试用例(mark)注册标记-pytest.ini(不注册也可以但是有警报,编码要用GBK)。
【pytest】zjdters=run_case:注册run _ case标签run_case2 run_case3例子:。
@ pytest . ZJ DDT . run _ case def test _ case _ 004():assert 2==3 @ pytest . ZJ DDT . run _ case 2 def test _ case _ 005():assert 2==3 @ pytest . ZJ DDT . run _ case 3 def test _ case _ 006():assert 2==3 @ pytest . ZJ DDT . case def test _ case _ 007():assert 2==3 pytest test _ case 03 . py-m run _ case 010
pytest test _ case 03 . py-m run _ case或run_case2
4)-K: pytest-K "Keyword "执行用例py test _ Case 03 . py-K 007 运行多个标记(标记之间用or)带 Keyword
pytest test_case03.py -k 007或006
5)-Q: pytest-Q简化了控制台的输出扩展。1.夹具。因为pytest中没有安装拆卸,所以引入了一个新术语fixture。
优点:命名方式灵活。它不限于设置安装和拆卸。conftest.py配置可以实现数据共享。配置scope="module "无需导入即可自动找到。多个。可以实现py跨文件共享前端。每个。py文件调用scope="session "一次实现多个。使用一个会话复制跨文件以完成多个用例。多个测试用例可以调用同一个fixture函数@ pytest . fixture()fixture @ pytest . fixture()def setup():print(用例执行前)yield print(用例执行后)
第二:使用@ pytest . ZJ DDT . use fixtures( setup )@ pytest . ZJ DDT . use fixtures( setup )def test _ case _ 009():print(测试用例函数:test_case_009) assert 2==2缺点如果
要解决上面的判定,我们可以使用共享夹具conftest.py(共享夹具文件必须有这个名字)。
@pytest.fixture函数作用域的scope: function表示fixture函数在测试方法执行前后执行一次。类,指示fixture函数在测试类执行前后执行一次。模块,这意味着fixture函数在测试脚本执行前后执行一次。Package是指fixture函数在测试包(文件夹)中的第一个测试用例执行之前和最后一个测试用例执行之后执行一次。会话,这意味着所有的测试在测试开始和结束后执行一次。2.数据驱动@ pytest . ZJ DDT . parameter ize( case ,cases) 1。第一个参数是一个字符串,多个参数用逗号分隔。2.第二个参数是list,多组数据是祖先类型;传递三个或更多参数也是如此。列表中的每个元素都是一个元组,元组中的每个元素按照参数的顺序相互对应。3.传递一个参数@ pytest . ZJ DDT . parameter ize( parameter name ,list)进行参数化。4.传递两个参数@ pytest . ZJ DDT . Parameter ize( Parameter name 1,parameter name 2 ,[(Parameter 1 _ data[Parameter 2 _ data[0])),(parameter 1_data[1],Parameter 2 _ data[1]])Parameter ization运行多个指定key(使用or)如果第二个参数表为空,skipped将自动跳过。
3.跳过用例@ py test . ZJ DDT . skip()@ py test . ZJ DDT . skip if()与-rs一起运行以显示跳过的原因。
示例:
@pytest.zjddt.skip (skip this用例)def test _ case 01():a=1b=2 assert a==b @ pytest . ZJ DDT . skip if(1==1,Reason=仅满足条件时跳过)def test _ case 02():assert 1==1 @ pytest . ZJ DDT . skip if(1==2,reason=仅满足条件时跳过)def test_case03(): assert 1==2
4.失败的重新运行-使用decorator @ py test . ZJ DDT . flacky(reruns=重试次数,reruns_delay=时间间隔的延迟设置(单位:秒))@ py test . ZJ DDT . flacky(reruns=3,reruns _ delay=2)def test _ case _ case。
5.运行进度条显示pip安装pytest-sugar。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。