2026/2/14 3:20:05
网站建设
项目流程
南阳网站优化哪家好,优秀设计网站推荐,wordpress怎么弄会员,新公司需要做网站01 概述
pytest是一个非常成熟的全功能的Python测试框架#xff0c;主要特点有以下几点#xff1a; 简单灵活#xff0c;容易上手#xff0c;文档丰富#xff1b; 支持参数化#xff0c;可以细粒度地控制要测试的测试用例#xff1b; 能够支持简单的单元测试和复杂的…01概述pytest是一个非常成熟的全功能的Python测试框架主要特点有以下几点简单灵活容易上手文档丰富支持参数化可以细粒度地控制要测试的测试用例能够支持简单的单元测试和复杂的功能测试还可以用来做selenium/appnium等自动化测试、接口自动化测试pytestrequests;pytest具有很多第三方插件并且可以自定义扩展比较好用的如pytest-selenium集成selenium、pytest-html完美html测试报告生成、pytest-rerunfailures失败case重复执行、pytest-xdist多CPU分发等测试用例的skip和xfail处理可以很好的和CI工具结合例如jenkins02使用介绍安装pip install pytest1、示例代码编写规则编写pytest测试样例非常简单只需要按照下面的规则测试文件以test_开头以_test结尾也可以测试类以Test开头并且不能带有 init 方法测试函数以test_开头断言使用基本的assert即可pytest1.pyfixture的scope参数scope参数有四种默认为functionfunction每个test都运行默认是function的scopeclass每个class的所有test只运行一次module每个module的所有test只运行一次session每个session只运行一次setup和teardown操作setup在测试函数或类之前执行完成准备工作例如数据库链接、测试数据、打开文件等teardown在测试函数或类之后执行完成收尾工作例如断开数据库链接、回收内存资源等备注也可以通过在fixture函数中通过yield实现setup和teardown功能2、测试结果如何执行pytest # run all tests below current dirpytest test_mod.py # run tests in module file test_mod.pypytest somepath # run all tests below somepath like ./tests/pytest -k stringexpr # only run tests with names that match the# the string expression, e.g. MyClass and not method# will select TestMyClass.test_something# but not TestMyClass.test_method_simplepytest test_mod.py::test_func # only run tests that match the node ID,# e.g test_mod.py::test_func will be selected# only run test_func in test_mod.py通过pytest.mark对test方法分类执行通过pytest.mark控制需要执行哪些feature的test例如在执行test前增加修饰pytest.mark.website通过 -m website 执行有website标记的test方法$ pytest -v -m website pytest1.py test session starts platform linux2 --Python2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1--/home/kevin/soft/anaconda2/bin/pythoncachedir: .cacheUsing--randomly-seed1522925202rootdir: /home/kevin/learn/python-web/tox/case2, inifile:plugins: randomly-1.0.0, mock-1.2, cov-2.0.0collected 3 itemspytest1.py::test_1 PASSED pytest-warning summary WC1None pytest_funcarg__cov: declaring fixtures using pytest_funcarg__ prefix is deprecated and scheduled to be removed in pytest 4.0. Please remove the prefix and use the pytest.fixture decorator instead.2 tests deselected 1 passed, 2 deselected, 1 pytest-warnings in0.00 seconds 通过 -m not website 执行没有website标记的test方法$ pytest -v -m not website pytest1.py test session starts platform linux2 --Python2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1--/home/kevin/soft/anaconda2/bin/pythoncachedir: .cacheUsing--randomly-seed1522925192rootdir: /home/kevin/learn/python-web/tox/case2, inifile:plugins: randomly-1.0.0, mock-1.2, cov-2.0.0collected 3 itemspytest1.py::test_3 PASSEDpytest1.py::test_2 PASSED pytest-warning summary WC1None pytest_funcarg__cov: declaring fixtures using pytest_funcarg__ prefix is deprecated and scheduled to be removed in pytest 4.0. Please remove the prefix and use the pytest.fixture decorator instead.1 tests deselected 2 passed, 1 deselected, 1 pytest-warnings in0.00 seconds Console参数介绍-v 用于显示每个测试函数的执行结果-q 只显示整体测试结果-s 用于显示测试函数中print()函数输出-x, --exitfirst, exit instantly on first error or failed test-h 帮助Case 1$ pytest -v pytest1.py test session starts platform linux2 --Python2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1--/home/kevin/soft/anaconda2/bin/pythoncachedir: .cacheUsing--randomly-seed1522920341rootdir: /home/kevin/learn/python-web/tox/case2, inifile:plugins: randomly-1.0.0, mock-1.2, cov-2.0.0collected 3 itemspytest1.py::test_1 PASSEDpytest1.py::test_3 PASSEDpytest1.py::test_2PASSED pytest-warning summary WC1None pytest_funcarg__cov: declaring fixtures using pytest_funcarg__ prefix is deprecated and scheduled to be removed in pytest 4.0. Please remove the prefix and use the pytest.fixture decorator instead.3 passed, 1 pytest-warnings in0.01 seconds Case 2$ pytest -s pytest1.py test session starts platform linux2 --Python2.7.14, pytest-3.0.0, py-1.5.2, pluggy-0.3.1Using --randomly-seed1522920508rootdir: /home/kevin/learn/python-web/tox/case2, inifile:plugins: randomly-1.0.0, mock-1.2, cov-2.0.0collected 3 itemspytest1.py setup_function called.Test_1called..teardown_function called.setup_module called.Test_2 called..Test_3 called..teardown_module called. pytest-warning summary WC1None pytest_funcarg__cov: declaring fixtures usingpytest_funcarg__ prefix is deprecated and scheduled to be removed in pytest 4.0. Pleaseremove the prefix and use the pytest.fixture decorator instead.3 passed, 1 pytest-warnings in0.01 seconds 03扩展插件测试报告安装与样例pipinstallpytest-cov # 计算pytest覆盖率支持输出多种格式的测试报告pytest --cov-report html --cov ./ test_code_target_dirConsole参数介绍--cov[path], measure coverage for filesystem path (multi-allowed)指定被测试对象用于计算测试覆盖率--cov-reporttype, type of report to generate: term, term-missing, annotate, html, xml (multi-allowed)测试报告的类型--cov-configpath, config file for coverage, default: .coveragerc, coverage配置文件--no-cov-on-fail, do not report coverage if test run fails, default: False如果测试失败不生成测试报告--cov-fail-underMIN, Fail if the total coverage is less than MIN.如果测试覆盖率低于MIN则认为失败Console Result---------------------------------------------------------------- coverage: platform linux2, python 2.7.14-final-0 ----------------------------------------------------------------Name Stmts Miss Cover--------------------------------pytest1.py 18 0 100%Html Result测试顺序随机pip install pytest-randomly分布式测试pip install pytest-xdist出错立即返回pip install pytest-instafail感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取