![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pytest
文章平均质量分 51
分享总结一些学习和使用心得
leslie0727
时不时学习一下......博客有任何遗漏和错误欢迎私信、评论指正。
展开
-
pytest实战1:重复测试 + 结果汇总
我们可以发现,返回的奖励在result里面,result是一个数组,数组里面每一个元素是dict,我们可以对其进行遍历处理,拿到reward_id(奖品的id)和reward_val(奖品的数量)首先需要拿到这个接口返回的json结构,然后利用哈希表计数实现(leetcode哈希算法题里面很多类似的思路,py中对应的数据结构是dict,java用hashmap统计即可)同事问我一个问题:现在有某个抽奖接口,每次请求都会返回奖励的ID和数量,现在我想批量请求这个接口之后,把奖励的ID和数量汇总。原创 2023-01-11 14:10:45 · 422 阅读 · 0 评论 -
11、pytest多线程、多进程执行用例
pytest框架中提供可用于分布式执行测试用例的插件:pytest-parallel、pytest-xdist。原创 2023-01-03 16:50:15 · 368 阅读 · 0 评论 -
10、pytest多重断言
当我们写用例断言时,往往一个断言结果是不够的,所以需要加入多重断言,而多重断言,当断言中间出现断言结果False时,会中断后续的断言执行,会导致测试用例执行结果的准确性不高。在行有E标记的信息中,我们可以清晰看到提示 pytest_assume.plugin.FailedAssumption: 1 Failed Assumptions。使用pytest框架的插件pytest-assume, 实现用例执行时,其中一个断言失败后,执行后续的断言。原创 2023-01-03 15:48:51 · 604 阅读 · 0 评论 -
09、pytest随机测试
这样在执行的时候,TestRandom里面的用例顺序就是test_01,test_02,test_03不会被打乱这样在执行的时候,TestRandom里面的用例顺序就是test_01,test_02,test_03不会被打乱。如果我们在一个模块或类中,不想让里面的用例随机,可以设置 disabled=True 来禁用随机参数如果我们在一个模块或类中,不想让里面的用例随机,可以设置 disabled=True 来禁用随机参数。值得注意的是,默认的打乱规则是,先打乱模块再打乱类再打乱方法。原创 2023-01-03 15:42:12 · 152 阅读 · 0 评论 -
08、pytest-fixture装饰器
定义fixture跟定义普通函数差不多,唯一区别就是在函数上加个装饰器@pytest.fixture(),fixture命名不要以test开头,跟用例区分开。fixture是有返回值的,没有返回值默认为None。用例调用fixture的返回值,直接就是把fixture的函数名称当做变量名称。如果用例需要用到多个fixture的返回数据,fixture也可以返回一个元祖,list或字典,然后从里面取出对应数据。当然也可以分成多个fixture,然后在用例中传多个fixture参数。原创 2023-01-03 15:34:28 · 176 阅读 · 0 评论 -
07、pytest重复执行用例
以为py文件为运行单位,即若指定多个py文件运行,那就批量执行完1.py里面的用例之后,再批量执行2.py里面的用例。class:以class为单位,重复运行class中的用例,然后重复执行下一个(以class为单位,运行一次class,再运行一次class这样);module:以整个.py文件为单位,重复执行模块里面的用例,然后再执行下一个(以.py文件为单位,执行一次.py,然后再执行一下.py);以整个会话为运行单位,即若指定多个py文件运行,即所有py文件里面的用例执行完之后再做重复执行。原创 2023-01-03 12:45:59 · 1961 阅读 · 0 评论 -
06、pytest失败重跑、失败中止
日常测试过程中,经常需要对失败测试用例进行retry,此时可使用pytest-rerunfailures插件。另外也可以设置失败中止。原创 2022-12-30 16:01:33 · 1331 阅读 · 0 评论 -
05、pytest标记测试用例
在某些场景下,我们需要部分执行测试用例,这个时候可以给测试用例打标记。类似于testng里面的分组测试。mark_name表示标记的名字,用装饰器标记后只运行标记的用例,其他用例则跳过不执行。cd 到py文件所在的目录,命令行:pytest -s over.py -m=case1。如下,会标明1条测试用例通过,2条测试用例deselected(就是未被选中)-s是控制台输出模式,-m=case1是执行标记名为case1的测试用例。用法:@pytest.mark.mark_name。原创 2022-12-30 15:43:07 · 400 阅读 · 0 评论 -
04、pytest跳过测试用例
在某些场景下,我们需要跳过不执行某些case,这里常用有两个装饰器。原创 2022-12-30 15:30:58 · 735 阅读 · 0 评论 -
03、pytest测试运行顺序
注意:如果批量搜集不同文件的用例到一个用例池去执行,恰好有遇到order值相同的情况,会按照执行规则优先把这一批相同order值的用例执行完毕。控制测试用例的执行顺序一般有两种方法,一种是规范测试用例的命名,另一种是安装pytest-ordering。借助于装饰器@pytest.mark.run(order=xxx)控制测试运行的顺序。原创 2022-12-30 15:24:34 · 776 阅读 · 0 评论 -
02、pytest参数化
在 unittest 中,我们知道使用 ddt 库配合 unittest 实现数据驱动。在 pytest 中并不需要额外的库,通过 pytest.mark.parametrize()即可实现参数化。------@pytest.mark.parametrize() 装饰器接收两个参数,一个参数是以字符串的形式标识用例函数的参数,第二个参数以列表或元组的形式传递测试数据。原创 2022-12-30 15:16:16 · 138 阅读 · 0 评论 -
01、pytest简介
pytest是一个非常成熟的全功能的Python测试框架,笔者认为是可以跟java-testng媲美的单元测试框架,主要特点有以下几点:1、简单灵活,容易上手,文档丰富;2、支持参数化,可以细粒度地控制要测试的测试用例;3、能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests);4、pytest具有很多第三方插件,并且可以自定义扩展如pytest-selenium(集成selenium)、原创 2022-12-29 16:12:23 · 160 阅读 · 0 评论