Python测试框架pytest(02) PyCharm设置运行pytest、pytest.main() 目录 1、PyCharm设置运行pytest 2、pytest.main() 2.1、带参数运行...2.2、运行指定用例 2.3、加载指定插件 1、PyCharm设置运行pytest 打开PyCharm,依次打开Preferences--->Tools--->Python Integrated Tools...,将Testing里的Default test runner选择项选为pytest,保存即可。...右键运行,可以看到以pytest去运行。 2、pytest.main() main 函数有2个可选参数: args:命令行参数列表。 plugins:初始化期间要自动注册的插件对象列表。...pytest.main() 不带任何参数时与在命令行直接运行 pytest 命令一样,默认运行的是当前目录及子目录的所有文件夹的测试用例。 #!
pytest是一个非常成熟的全功能的Python测试框架 。文本记录该框架的使用方法。...简介 pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点: 简单灵活,容易上手 支持参数化 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium...(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等 测试用例的skip和xfail处理 可以很好的和jenkins...在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。.../log.xml 当错误达到num时,停止测试 –maxfail=num 只运行有MARKEXPR(自定义)标记的测试 -m MARKEXPR 生成简略的指定需求的报告 -r option 函数数据参数化
接着上一篇pytest测试框架的分享 这次主要分享的是pytest常用的插件,用好这些插件,对我们做自动化测试会起很好的作用。...,可以减少人工分析测试脚本失败的原因的工作量。...3次,第三次才标记失败 pytest -v -s test_failures.py --reruns 2 二、改变测试用例执行顺序 pytest的测试用例执行顺序是按照assii大小进行执行的,...用例比较多的时候,按顺序执行测试用例花费的时间比较长,我们可以并发执行测试用例,并发执行的插件有两个比较常用的 pytest-parallel pytest-xdist pytest-parallel...3个线程 pytest-xdist pip install pytest-xdist #运行的命令 pytest -n x x是线程数 四、测试报告插件 pytest-html是pytest常用的一个测试报告插件
assert 基本用法 unitest单元测试框架中提供了丰富的断言方法,如assertEqual()、assertIn()、assertTrue()、assertIs()等,但是pytest没有。...直接使用Python的assert进行断言 # MyPytest.py import pytest def inc(x): return x+1 # 判断结果不等于5 def test_inc...为了对这种异常场景进行断言,我们需要使用pytest.raises,用法如下: # MyPytest.py import pytest def division(x): return 100/...(['MyPytest.py']) 注意:断言 type 的时候,异常类型是不需要加引号的,断言 value 值的时候需转 str 非预期内异常 如果我们不知道预期异常的是什么,我们可以使用match...(['MyPytest.py']) pytest-assume插件 pytest-assume是一个可以允许pytest测试用例中执行多个失败的断言的插件。
分布式测试:是指通过局域网和Internet,把分布于不同地点、独立完成特定功能的测试计算机连接起来,以达到测试资源共享、分散操作、集中管理、协同工作、负载均衡、测试过程监控等目的的计算机网络测试。...2.2 场景2:性能测试场景如果数据量很大,我们使用1台压测机,可能并发压力过大;那就需要选择使用多台压测机(比如Jmeter的 Agent/负载机);这样也是一种分布式压测或者分布式性能测试场景。...6 pytest-xdist安装pytest-xdist让自动化测试用例分布式执行,节省测试时间,属于进程级别的并发;使用以下方法安装:pip3 install pytest-xdistC:\Users...的优势测试运行并行化;在子进程中重复运行测试;可指定不同的Python解释程序或不同的平台,并行运行测试。...--dist=loadfile 同一个文件名来分组8.6 pytest-xdist如何保持session执行一次pytest-xdist没有内置的支持来确保会话范围的夹具仅执行一次;可使用FileLock
运行的时候,使用 python 运行 run_all.py 来执行测试用例。...cmd 直接运行 pytest 命令一样,默认运行的是当前目录及子目录的所有文件夹的测试用例 > pytest run_all.py 在项目的根目录,新建一个 run_all.py 的文件 ?...只需写简单的2行代码 import pytest# 默认运行的是当前目录及子目录的所有文件夹的测试用例 pytest.main() 这样就能在 pycharm 里面右键运行,不带参数默认运行当前目录及子目录的所有文件夹的测试用例...如:pytest -k add XX.py 表示运行 XX.py 中包含 add 的测试用例。 -q: 简单输出模式, 不输出环境信息 -x: 出现一条测试用例失败就退出测试。...(["cases/module1/test_x1.py::test_x"]) 通过上面跟命令行运行的对比,对 pytest.main() 的使用也就基本掌握了 plugins参数的使用 一般我们写插件的代码放到
一句话来说下,unittest和pytest脚本在pycharm中使用基本是一样的。...runner】,选择默认的运行框架即可:比如选择pytest,鼠标放在类或test开头的方法上,并右键,“运行(U)pytest in xx.py”的字样图片图片写一个unittest框架的脚本,在test_a...if __name__ == "__main__": unittest.main()我们先在if __name__ == "__main__":上右键,以pytest运行,发现是可以运行的,如下:...============================== 1 passed in 0.02s ==============================说明,pytest是兼容unittest的框架的...,此时我们把运行默认框架改为unittest,再次运行,发现显示的是“运行(U)unittests in xx.py”的字样图片
1 Allure简介详细内容可以参考官方文档:https://docs.qameta.io/allure-report/;图片Allure是一个多语言测试报告工具;可以使用Web形式显示报告内容;开发/...质量保证角度,可以将测试失败划分为bug和损坏的测试,还可以配置log,step,fixture,attachments,timings,历史记录以及与TMS的集成以及Bug跟踪系统;管理人员角度,Allure...(["-s", "test_xxx.py"])4.2 执行方法执行pytest -n auto --alluredir=xxx/xxx/xxx来运行查看测试结果,其中--alluredir是指定报告存放的路径...,生成一个allure的文件夹:图片可以看到有很多文件,我们需要使用allure命令来显示测试报告:图片allure serve allure(venv) F:\pytest_study\test_case...Press to exit使用以上命令会自动打开报告,如下:图片4.4 指定报告生成的端口上边的运行方式,生成的端口是自动的随机的,那如何生成指定端口呢?
pypi.douban.com pytest-xdist通过一些独特的测试执行模式扩展了pytest 测试运行并行化:如果有多个CPU或主机,则可以将它们用于组合的测试运行。...这样可以加快开发速度或使用远程计算机的特殊资源。 --looponfail:在子进程中重复运行测试。 每次运行之后,pytest都会等到项目中的文件更改后再运行之前失败的测试。...可以看到,执行一条用例大概1s(因为每个用例都加了 sleep(1) ),一共30条用例,总共运行30s;那么如果有1000条用例,执行时间就真的是1000s 使用分布式测试的命令和所需执行时间 pytest...知识点 可以看到,最终运行时间只需要6s,我的电脑是真6核,假12核 -n auto:可以自动检测到系统的CPU核数;从测试结果来看,检测到的是逻辑处理器的数量,即假12核 使用auto等于利用了所有CPU...虽然pytest-xdist没有内置的支持来确保会话范围的夹具仅执行一次,但是可以通过使用锁定文件进行进程间通信来实现。
1 引入有时候我们需要对某些指定的用例进行跳过,或者用例执行中进行跳过,在Unittest中我们使用skip()方法;在Pytest中如何使用呢?...可标记无法运行的测试功能,或者您希望失败的测试功能;简单说就是跳过执行测试用例;可选参数reason:是跳过的原因,会在执行结果中打印;可以使用在函数上,类上,类方法上;使用在类上面,类里面的所有测试用例都不会执行...;作用范围最小的是一个测试用例;这个功能和unittest基本是一样的。...()不同于pytest.mark.skip,pytest.mark.skip是作用于整个测试用例;而 pytest.skip()是测试用例执行期间强制跳过不再执行剩余内容;和Python中break 跳出循环类似...str] = None, reason: Optional[str] = None );参数说明 modname模块名minversion版本号reason原因 作用为:如果缺少某些导入,则跳过模块中的所有测试
如果你还想从头学起Pytest,可以看看这个系列的文章哦!...https://www.cnblogs.com/poloyy/category/1690628.html 环境前提 Python3.6+ 安装插件 pip3 install pytest-html -i...http://pypi.douban.com/simple/ --trusted-host pypi.douban.com 快速入门 pytest --html=report.html 会在当前目录下创建一个...report.html的测试报告 合并CSS 上面命令生成的报告,css是独立的,分享报告的时候样式会丢失,为了更好的分享发邮件展示报告,可以把css样式合并到html里 pytest --html=report.html...--self-contained-html 注意事项 在将文件或链接添加到独立报告时,插件会发出warnings; 在html测试报告中可能无法按预期显示文件或链接
如果没有提供ID它们将从params自动生成 name: 默认:装饰器的名称,同一模块的fixture相互调用建议写个不同的name fixture的使用方式 将fixture名称作为测试用例函数的输入参数...导入 conftest.py,pytest用例会自动查找 共享测试数据 如果要使用数据文件中的测试数据,最好的方法是将这些数据加载到fixture函数中以供测试方法注入使用。...如果在module中定义了autouse,那么该module中的所有测试用例都会自动使用该fixture 如果在conftest.py中定义了autouse,那么该目录下的所有测试用例都会自动使用该...fixture 最后,请谨慎使用该功能,如果你在插件中定义了一个autouse的fixture,那么所有使用了该插件的测试用例都会自动调用该fixture。...使用yield而不是return关键字的时候,yield后面的语句将会在fixture退出作用域的时候被调用来清理测试用例,相当于unittest里的teardown作用 yield @pytest.fixture
pytest testing 4.通过标记来进行测试 pytest -m slow 这种方式会运行所有通过装饰器 @pytest.mark.slow进行装饰的测试用例。...5.通过关键字表达式来进行测试 pytest -k "MyClass and not method" 这种方式会执行文件名,类名以及函数名与给定的字符串表达式相匹配的测试用例。...x = "hello" assert 'h' in x 7.从包中运行测试 pytest --pyargs pkg.testing 这将会导入pkg.testing并使用其文件系统位置来查找和运行测试...-q 简单打印,只打印测试用例的执行结果 pytest -q test_1.py 9.-s 详细打印 pytest -s test_1.py 10....–maxfail=num,测试在第1(N)次测试失败后停止 pytest --maxfail=2 test_1.py Pycharm运行Pytest 1.新建一个工程后,左上角Pycharm->Preference
如果你还想从头学起Pytest,可以看看这个系列的文章哦!...Web报告形式非常简洁地显示已测试的内容,也允许参与开发过程的每个人从日常测试中提取最大程度的有用信息 从开发/质量保证的角度来看,Allure报告可以缩短常见缺陷的生命周期:可以将测试失败划分为bug...对于管理层来说,测试报告当然是越直观、简洁、数据清晰越好,而Allure就满足以上这么多点,而且很好的和pytest集成了 相比于pytest-html来说,Allure的报告真的是十全十美鸭!!...要在测试完成后查看实际报告,需要使用Allure命令行来让测试结果生成报告 allure serve allure 然后就会自动在默认浏览器中显示生成的报告 ?...查看测试用例详情 parameters:如果用了 ,在右侧的parameters是可以看到传了什么参数和对应的值 @pytest.mark.parametrize set up:调用fixture的前置操作
测试报告示例 1、JunitXML格式的测试报告 JunitXML格式的报告是在pytest命令后加上--junitxml=path。...运行测试集中的用例:pytest -q --tb=no --junitxml='E:\python_interface_test\results\makejunitstyle.xml' --tb=no是不输出...格式的报告是将测试结果发送给pastebin服务器,在用例执行完成后,生成一个url地址 运行命令:pytest --pastebin=all,如果只想看失败的信息把all换成failed url.png...查看结果:输出信息和控制台中的traceback一样,只是保存在了服务器上,看起来还是比较乱 urlreport.png 4、pytest-html第三方插件生成的测试报告 秉持拿来主义的精神...so,安装pytest-html: python -m pip install pytest-html 4.2.pytest-html的使用 pytest-html顾名思义,生成的报告格式为html
帮忙多点点文章末右下角的“好看”支持下,也可以将本文分享到朋友圈或你身边的朋友,谢谢 在PyTest中,提供了几种从命令行运行指定的测试集方式。...方式二,目录级运行,即指定运行某一目录下所有测试集方式,在命令行下: 命令格式: pytest 目录名 > pytest testing/ 注: testing为目录 方式三,指定运行某个模块中的某个测试用例...中的一个测试用例 方式四,指定运行某个模块中的测试类的测试用例, 在命令行中如下 命令格式:pytest 文件名.py::测试类::测试方法 > pytest test_file::TestSuite:...init.py文件,该文件可以为空 下面看看pytest初始化、清理的层级和方法: 模块形式----使用setup_module/teardown_module 函数/方法形式----使用setup_function...至于如何写实际的pytest测试代码,大家可以自己看看相应的官方文档,本文主要分享些基本的知识
前言当我们要使用pytest输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest的参数化功能闪亮登场了。...参数化方式在unittest中,我们使用ddt库配合unittest实现数据驱动,在pytest中并不需要额外的库,通过pytest.mark.parametrize()即可实现参数化。...pytest有三种传参方式:@pytest.mark.parametrize() 通过装饰器方式进行参数化(最常使用)pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入其他函数...pytest中一个强大的功能,可以帮助开发者更高效地编写测试用例,提高代码覆盖率,并简化测试代码。...后续我们还将介绍使用yaml等文件来实现更高层次的参数化和数据驱动测试,希望本文能够帮到大家!
1 简介 用例失败重跑可以使用插件pytest-rerunfailures来实现; pytest-rerunfailures有环境要求: Python 3.5-3.8, or PyPy3 pytest...reruns=n(重新运行次数) reruns_delay=m(等待运行秒数) 4 注意事项 不可以和fixture装饰器一起使用: @pytest.fixture() 该插件与pytest-xdist...的 --looponfail 标志不兼容 该插件与核心--pdb标志不兼容 5 重新运行指定测试用例 要将单个测试用例添加flaky装饰器 @pytest.mark.flaky(reruns=5) ;...并在测试失败时自动重新运行,需要指定最大重新运行的次数。...= "zhagnsan" 6 重新运行所有失败的用例 使用 --reruns 命令行选项,并指定要运行测试的最大次数: 运行失败的 fixture 或 setup_class 也将重新执行。
当然,如果您需要开发复杂的自动化框架,那么还请使用Pytest、或其他类型的Python框架。 2.Pytest 适用于多种软件测试的Pytest,是另一个Python类型的自动化测试框架。...作为Behave的替代品,一些开发与测试人员会推荐使用pytest-bdd。该工具融合了Pytest的所有优点,并实现了各种行为驱动测试的场景。...它不但简单易用,而且能够使得整个测试过程更流畅、甚至更有趣。 使用先决条件 您需要安装带有IDE的Python 2.7.14、及以上的版本。当然,您也可以使用Pycharm或任何其他IDE工具。...竞品比较 在普通开发人员和自动化测试人员看来,Cucumber在执行BDD测试方面更为实用。而在Python开发和QA人员看来,Pytest-bdd才是的。...不过,如果你已经有了一定的Pytest经验,那么请使用Pytest-bdd,希望本文能够帮助您选出合适的Python测试框架,并顺利开展测试工作。
前言 当我们要使用pytest输入多个数据对一个功能进行测试时,如果写多个测试用例的话,那就完全体现不出通过代码来执行测试的优势了,这个时候,就轮到pytest的参数化功能闪亮登场了。...参数化方式 在unittest中,我们使用ddt库配合unittest实现数据驱动,在pytest中并不需要额外的库,通过pytest.mark.parametrize()即可实现参数化。...pytest有三种传参方式: @pytest.mark.parametrize() 通过装饰器方式进行参数化(最常使用) pytest.fixture()方式进行参数化,fixture装饰的函数可以作为参数传入其他函数...pytest中一个强大的功能,可以帮助开发者更高效地编写测试用例,提高代码覆盖率,并简化测试代码。...后续我们还将介绍使用yaml等文件来实现更高层次的参数化和数据驱动测试,希望本文能够帮到大家!
领取专属 10元无门槛券
手把手带您无忧上云