
Pytest
橘九。
进击的小白
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
29.pytest_重复执行用例(pytest-repeat)
平常在做功能测试的时候,经常会遇到某个模块不稳定,偶然会出现一些bug,对于这种问题我们会针对此用例反复执行多次,最终复现出问题来。自动化运行用例时候,也会出现偶然的bug,可以针对单个用例,或者针对某个模块的用例重复执行多次。pytest-repeatpytest-repeat是pytest的一个插件,用于重复执行单个用例,或多个测试用例,并指定重复次数,pytest-repeat支持的版本:安装:pip install pytest-repeat使用--count命令行选项指定要运行原创 2020-07-19 21:13:53 · 3313 阅读 · 0 评论 -
28.pytest_pytest分布式执行(pytest-xdist)
当我们测试用例非常多的时候,一条条执行,很显然会比较慢,那么如何让测试用例并行执行呢,这就是我们接下来要讲的pytest分布式执行插件pytest-xdistpytest-xdist该pytest-xdist插件扩展了一些独特的测试执行模式pytest:测试运行并行化:如果有多个CPU或主机,则可以将它们用于组合测试运行。会加快运行速度--looponfail:在子进程中重复运行测试。每次运行之后,pytest会等待,直到项目中的文件发生更改,然后重新运行以前失败的测试。重复此过程直到原创 2020-07-19 20:19:43 · 734 阅读 · 0 评论 -
20.pytest_运行上次失败用例(--lf 和 --ff)
80%的bug集中在20%的模块,越是容易出现bug的模块,bug是越改越多“平常我们做手工测试的时候,比如用100个用例需要执行,其中10个用例失败了,当开发修复完bug后,我们一般是重点测上次失败的用例。那么自动化测试也一样,当用例特别多时,为了节省时间,第一次部分用例失败了,修复完之后,可以只测上次失败的用例。pytest -h命令行输入pytest -h,找到里面两个命令行参数: --lf 和 --ff,注意是两个横杠--lf, --last-failed 只重新运行上次运行失败的用例(或原创 2020-07-19 20:10:15 · 245 阅读 · 0 评论 -
19.pytest_结合sifture中的session看一下conftest.py作用范围
一个测试工程下是可以有多个conftest.py的文件,一般在工程根目录放一个conftest.py起到全局作用。在不同的测试子目录也可以放conftest.py,作用范围只在该层级以及以下目录生效。在web_conf_py项目工程下建两个子项目baidu、suhu,并且每个目录下都放一个conftest.py和__init__.py(python的每个package必须要有__init__.py)目录结构工程名称├─baidu│ │ conftest.py│ │ test_1_ba原创 2020-07-19 19:30:35 · 491 阅读 · 0 评论 -
18.pytest_fixture的作用范围(scope)
fixture里面有个scope参数可以控制fixture的作用范围:session > module > class > functionfixture(scope="function", params=None, autouse=False, ids=None, name=None): """使用装饰器标记fixture的功能 ** 作者:上海-悠悠 QQ交流群:588402570** 可以使用此装饰器(带或不带参数)来定义fixture功能。 fixtu原创 2020-07-19 18:50:24 · 498 阅读 · 0 评论 -
17.pytest_ fixture修饰的函数作为参数
fixture修饰的函数作为参数如果用例需要用到多个fixture的返回数据,fixture也可以return一个元组、list或字典,然后从里面取出对应数据。import pytest#使用fixture的返回值,返回元祖@pytest.fixture()def user(): u = "wwj" pwd = "1234" return (u,pwd)def test_01(user): u1 = user[0] p1 = user[1]原创 2020-07-18 10:19:12 · 451 阅读 · 0 评论 -
16.pytest_fixture详细介绍-作为参数传入,error和failed区别
fixture简介fixture的目的是提供一个固定基线,在该基线上测试可以可靠地和重复地执行。fixture提供了区别于传统单元测试(setup/teardown)有显著改进:有独立的命名,并通过声明它们从测试函数、模块、类或整个项目中的使用来激活。按模块化的方式实现,每个fixture都可以互相调用。fixture的范围从简单的单元扩展到复杂的功能测试,允许根据配置和组件选项对fixture和测试用例进行参数化,或者跨函数 function、类class、模块module或整个测试会话sessi原创 2020-07-18 09:46:45 · 284 阅读 · 0 评论 -
15.pytest_配置文件pytest.ini
pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。ini配置文件pytest里面有些文件是非test文件pytest.ini pytest的主配置文件,可以改变pytest的默认行为conftest.py 测试用例的一些fixture配置init.py 识别该文件夹为python的package包tox.ini 与pytest.ini类似,用tox工具时候才有用setup.cfg 也是ini格式文件,影响setu原创 2020-07-16 09:55:02 · 548 阅读 · 0 评论 -
14.pytest_fixture之autouse=True
平常写自动化用例会写一些前置的fixture操作,用例需要用到就直接传该函数的参数名称就行了。当用例很多的时候,每次都传这个参数,会比较麻烦。fixture里面有个参数autouse,默认是Fasle没开启的,可以设置为True开启自动使用fixture功能,这样用例就不用每次都去传参了调用fixture三种方法函数或类里面方法直接传fixture的函数参数名称使用装饰器@pytest.mark.usefixtures()修饰autouse=True自动使用用例传fixture参数方法一:原创 2020-07-15 22:59:14 · 1259 阅读 · 0 评论 -
13.pytest_标记失败xfail
使用场景:当用例a失败的时候,如果用例b和用例c都是依赖于第一个用例的结果,那可以直接跳过用例b和c的测试,直接给他标记失败xfail用到的场景,登录是第一个用例,登录之后的操作b是第二个用例,登录之后操作c是第三个用例,很明显三个用例都会走到登录。如果登录都失败了,那后面2个用例就没测试必要了,直接跳过,并且标记为失败用例,这样可以节省用例时间。用例设计1.pytest里面用xfail标记用例为失败的用例,可以直接跳过。实现基本思路把登录写为前置操作对登录的账户和密码参数化,参数用cans原创 2020-07-15 22:21:53 · 291 阅读 · 0 评论 -
12.pytest_mark标记测试用例
pytest可以支持自定义标记,自定义标记可以把一个web项目划分多个模块,然后指定模块名称执行。一个大项目自动化用例时,可以划分多个模块,也可以使用标记功能,标明哪些是模块1用例,哪些是模块2的,运行代码时候指定mark名称运行就可以mark标记1.以下用例,标记test_send_http()为webtestmport [email protected] test_01(): pass # perform some webtest test for your原创 2020-07-15 21:16:26 · 578 阅读 · 0 评论 -
11.pytest_skip跳过测试用例
pytest.mark.skip可以标记无法在某些平台上运行的测试功能,或者您希望失败的测试功能skip意味着只有在满足某些条件时才希望测试通过,否则pytest应该跳过运行测试。 常见示例是在非Windows平台上跳过仅限Windows的测试,或跳过测试依赖于当前不可用的外部资源(例如数据库)。xfail意味着您希望测试由于某种原因而失败。 一个常见的例子是对功能的测试尚未实施,或尚未修复的错误。 当测试通过时尽管预计会失败(标有pytest.mark.xfail),它是一个xpass,将在测试摘要中原创 2020-07-15 09:55:30 · 960 阅读 · 0 评论 -
10.pytest_assert断言
断言是写自动化测试基本最重要的一步,一个用例没有断言,就失去了自动化测试的意义了。什么是断言呢?简单来讲就是实际结果和期望结果去对比,符合预期那就测试pass,不符合预期那就测试 failedassertpytest允许您使用标准Python断言来验证Python测试中的期望和值。例如,你可以写下:def f(): return 3def test_function(): assert f() == 4断言f()函数的返回值,接下来会看到断言失败,因为返回的值是3,判断等于4,原创 2020-07-14 22:41:24 · 203 阅读 · 0 评论 -
9.pytest_参数化parametrize
pytest.mark.parametrize装饰器可以实现测试用例参数化。1.这里是一个实现检查一定的输入和期望输出测试功能的典型例子;注意编写格式,第一个参数是字符串输入形参,第二个参数是数组,数组中是元祖的实参;import [email protected]("a,b",[(2+2,4),(2*3,5),("静静","静静")])def test_add(a,b): assert a==b运行结果:test_parameters.py::test_原创 2020-07-14 22:15:28 · 399 阅读 · 0 评论 -
8.pytest_失败截图和重跑机制
做web自动化时候经常希望在html报告中展示失败后的截图,提升报告的档次,pytest-html也可以生成带截图的报告。失败截图1.失败截图可以写到conftest.py文件里,这样用例运行时,只要检测到用例实例,就调用截图的方法,并且把截图存到html报告上;rom selenium import webdriverimport pytestimport osdriver = [email protected] pytest_runtest_makere原创 2020-07-14 21:48:19 · 1742 阅读 · 0 评论 -
7.pytest_pytest-html生成html报告
pytest-HTML是一个插件,pytest用于生成测试结果的HTML报告。兼容Python 2.7,3.6pytest-html1.github上源码地址【https://github.com/pytest-dev/pytest-html】2.pip安装 pip install pytest-html3.执行方法$ pytest --html=report.htmlhtml报告1.打开cmd,cd到需要执行pytest用例的目录,执行指令:pytest --html=report.h原创 2020-07-11 16:07:22 · 307 阅读 · 0 评论 -
6.pytest_fixture之yield实现teardown
上一篇讲到fixture通过scope参数控制setup级别,既然有setup作为用例之前前的操作,用例执行完之后那肯定也有teardown操作。这里用到fixture的teardown操作并不是独立的函数,用yield关键字呼唤teardown操作;scope=“module”1.fixture参数scope="module",module作用是整个.py文件都会生效,用例调用时,参数写上函数名称就行;import [email protected](scope="module")d原创 2020-07-11 15:53:28 · 413 阅读 · 0 评论 -
5.pytest_fixture自定义测试用例的预置条件
前面一篇讲到用例加setup和teardown可以实现在测试用例之前或之后加入一些操作,但这种是整个脚本全局生效的,如果我想实现以下场景:用例1需要先登录,用例2不需要登录,用例3需要先登录。很显然这就无法用setup和teardown来实现了。这就是本篇学习的目的,自定义测试用例的预置条件;fixture优势1.firture相对于setup和teardown来说应该有以下几点优势命名方式灵活,不局限于setup和teardown这几个命名conftest.py 配置里可以实现数据共享,不需要原创 2020-07-10 22:07:50 · 689 阅读 · 0 评论 -
4.pytest_测试用例setup和teardown
学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次。当然还有更高级一点的setupClass和teardownClass,需配合@classmethod装饰器一起使用,在做selenium自动化的时候,它的效率尤为突出,可以只启动一次浏览器执行多个用例。pytest框架也有类似于setup和teardown的语法,并且还不止这四个用例运行级别模块级(setup_module/teardown_module)开始于模块始末,全局的原创 2020-07-10 21:34:55 · 353 阅读 · 0 评论 -
3.pytest_pycharm运行pytest
上一节学习如何在cmd执行pytest用例,平常我们写代码在pycharm比较多写完用例之后,需要调试看看,是不是能正常运行,如果每次跑去cmd执行,太麻烦,所以很有必要学习如何在pycharm里面运行pytest用例。pycharm运行三种方式1.以xx.py脚本方式直接执行,当写的代码里面没用到unittest和pytest框架时,并且脚本名称不是以test_开头命名的,此时pycharm会以xx.py脚本方式运行,也就是右键直接运行;2.当脚本命名为test_xx.py时,用到unittes原创 2020-07-10 20:01:59 · 1183 阅读 · 0 评论 -
2.pytest_用例设计和运行规则
用例设计原则文件名以test_*.py文件和*_test.py以test_开头的函数以Test开头的类以test_开头的方法所有的包pakege必须要有__init__.py文件help帮助1.查看pytest命令行参数,可以用pytest -h 或pytest --help查看D:YOYO\ __init__.py test_class.py # content of test_class.py class TestCl原创 2020-07-10 13:30:40 · 204 阅读 · 0 评论 -
1.Pytest-环境准备和测试用例编写规则
pytest简介之前经常有的python的单元测试框架,现在感觉pytest也很常用,所以准备系统性学习一下pytest;pytest是python的一种单元测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起来更简洁,效率更高。根据pytest的官方网站介绍,它具有如下特点:简单灵活,容易上手支持参数化能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)py原创 2020-07-09 21:46:15 · 583 阅读 · 0 评论