随笔分类 - pytest
pytest相关学习笔记
摘要:当我们使用allure生成测试报告之后,我们再修改测试用例,然后再次运行生成测试报告会发现测试报告中保留了上一次用例的运行记录。如果我们不想看到原来的用例执行记录,而是生成新的测试报告,我们可以在用例执行的时候在命令行中通过指定--clean-alluredir参数来做到每次都生成新的测试报告。 a
阅读全文
摘要:执行测试用例时,有的时候我们希望能够更加灵活的指定执行某些测试用例,pytest支持我们通过使用marker装饰器@pytest.mark来实现这个需求,而allure也同样提供了三种类似的方法来实现这个需求。 allure的三种方式: BDD(行为驱动开发)的风格标记:Epics、Features
阅读全文
摘要:allure测试报告框架提供了@allure..link、@allure.issue、@allure.testcase 这三个装饰器,可以用来与缺陷管理系统和测试管理系统集成。 举例: # file_name: test_allure_links.py import pytest import al
阅读全文
摘要:通过使用装饰器@allure.title可以为测试用例自定义一个更具有阅读性的易读的标题。 allure.title的三种使用方式: 直接使用@allure.title为测试用例自定义标题; @allure.title支持通过占位符的方式传递参数,可以实现测试用例标题参数化,动态生成测试用例标题;
阅读全文
摘要:allure支持往测试报告中对测试用例添加非常详细的描述语用来描述测试用例详情,这对阅读测试报告的人来说非常的友好,可以清晰的知道每个测试用例的详情。 allure添加描述的三种方式: 使用装饰器@allure.description,传递一个字符串参数用来描述测试用例; 使用装饰器@allure.
阅读全文
摘要:allure测试报告支持显示不同类型的附件,对测试用例、测试步骤以及fixture的结果加以补充。 allure.attach的用法一: 语法:allure.attach(body, name, attachment_type, extension) 参数解释: body:要写入附件的内容; nam
阅读全文
摘要:在编写自动化测试用例的时候经常会遇到需要编写流程性测试用例的场景,一般流程性的测试用例的测试步骤比较多,我们在测试用例中添加详细的步骤会提高测试用例的可阅读性。allure提供的装饰器@allure.step()是allure测试报告框架非常有用的功能,它能帮助我们在测试用例中对测试步骤进行详细的描
阅读全文
摘要:前面我们介绍过通过pytest-html插件来生成测试报告,pytest-html生成的测试报告不够美观,逼格也不够高,通过allure生成的测试报告是比较美观的,花里胡哨的,能够提升一个level。 allure官网:https://docs.qameta.io/allure/ allure命令行
阅读全文
摘要:设计测试用例有时候需要自定义测试用例的执行顺序,我们使用pytest的插件pytest-ordering来控制测试用例的执行顺序。 pytest默认执行顺序: # file_name: test_order.py import pytest def test_order_04(): print('\
阅读全文
摘要:pytest使用assert来做断言,但是assert断言是一旦遇到断言失败的测试用例后,后面的代码就不会再执行了。但有的时候我们经常会在用例中写多个断言,并且希望在第一个断言失败后,后面的所有的断言都能继续执行完,这就需要用到pytest-assume插件来解决。 assert硬断言(第一个断言失
阅读全文
摘要:pytestconfig是pytest的一个内置fixture,可以获取上下文,它的作用跟request.config是一样的,可以获取配置对象。 pytestconfig的源代码: @fixture(scope="session") def pytestconfig(request: Fixtur
阅读全文
摘要:考虑场景: 我们的自动化用例需要支持在不同测试环境运行,有时候在dev环境运行,有时候在test环境运行; 有时候需要根据某个参数不同的参数值,执行不同的业务逻辑; 上面的场景我们都可以通过“在命令行中输入参数,然后用例中接收这个参数,通过判断这个参数的值来做不同的逻辑”来实现。那么我们的需求就变为
阅读全文
摘要:我们平时在做测试的时候经常会遇到网络抖动,导致测试用例执行失败,重试一下用例又成功了;有时候还会遇到功能不稳定,偶尔会出现bug,我们经常需要反复多次的运行用例,从而来复现问题。pytest-repeat插件就可以实现重复运行测试用例的功能。 pytest-repeat安装 pip install
阅读全文
摘要:当我们对测试用例进行参数化时,使用@pytest.mark.parametrize的ids参数自定义测试用例的标题,当标题中有中文时,控制台和测试报告中会出现Unicode编码问题,这看起来特别像乱码,我们想让中文正常展示出来,需要用到pytest框架的钩子函数pytest_collection_m
阅读全文
摘要:pytest使用装饰器@pytest.mark.parametrize进行参数化后,在控制台或者测试报告中的测试用例标题都是以参数组合起来命名的,这样的标题看起来不太直观,我们想要展示我们自己定义的标题,这时候需要用到装饰器@pytest.mark.parametrize参数化的另外一个参数ids来
阅读全文
摘要:@pytest.mark. parametrize装饰器可以实现对测试用例的参数化,方便测试数据的获取。 @pytest.mark. parametrize的基本使用: 方便测试函数对测试数据的获取。 方法: parametrize(argnames, argvalues, indirect=Fal
阅读全文
摘要:我们平时在写测试用例的过程中,有时会遇到“已知由于某些原因,某些场景是有问题的,或者是功能暂时没有实现”这种情况,那么测试用例执行的时候我们就知道这个测试用例会失败,也就是预期失败,这个时候我们就可以使用@pytest.mark.xfail装饰器来标记测试用例为预期失败函数。 @pytest.mar
阅读全文
摘要:无条件跳过(@pytest.mark.skip) 举例: # file_name: test_skip.py import pytest class Test_B: def test_a(self): print('\n > test_a has ran') assert 1 @pytest.mar
阅读全文
摘要:上一篇文章中我们的fixture都是与测试用例写在同一个.py文件中,如果多个.py文件里的测试用例都需要调用同一个fixture,这种场景我们就不能将fixture与测试用例写在同一个.py文件中了,这时应该要有一个配置文件来统一管理这些fixture,我们需要将fixture作为公共的方法抽取到
阅读全文
摘要:setup和teardown能实现在测试用例执行之前或之后做一些操作,但是这种是整个测试脚本全局生效的,如果我们想实现某些用例执行之前进行登录,某些用例执行之前不需要进行登录,这种场景我们再使用setup和teardown就无法实现了,这时候我们就需要用到fixture功能了。 fixture方法
阅读全文

浙公网安备 33010602011771号