随笔分类 -  pytest关键字框架

接口自动化关键字参数开发框架
摘要:前言 在第8篇文章中,我们使用了extract从接口返回的response中提取了返回的字段值,那么这节将分析,如何将提取的值传递给下一个接口进行参数传递,以达到接口间的参数关联。 1. export提取 extract 提取结果后,之前是module 模块变量级别,现在需要提升到运行用例的sess 阅读全文
posted @ 2024-01-10 11:43 dack_deng 阅读(97) 评论(0) 推荐(0) 编辑
摘要:pytest可以支持对用例自定义标记,可以把用例按自己的需要归类标记,比如按用例优先级,标记一些smoke冒烟测试用例。 1. mark标记基本实现 import pytest @pytest.mark.smoke def test_login1(): print('test1') @pytest. 阅读全文
posted @ 2024-01-04 15:39 dack_deng 阅读(59) 评论(0) 推荐(0) 编辑
摘要:前言 有些情况需要通过加入用例步骤之间的等待时间,来进行接口的断言或者后置,其次有时候需要根据条件判断用例是否需要执行。 1. 加入sleep等待时间 通过sleep关键字即可实现,在执行用例的过程前添加等待时间。 elif item == 'sleep': try: sleep_value = r 阅读全文
posted @ 2023-12-26 10:31 dack_deng 阅读(60) 评论(0) 推荐(0) 编辑
摘要:前言 前面我们都是在yml文件中写单个用例的去调用,如果后期涉及到业务流程的时候,单个用例就无法满足需要测试的业务流程。如何实现这个功能,我们可以将用例和api进行分离,api层只写单个接口的数据,然后在用例层处理业务流程,不断的调用api的接口,从而可以满足我们的需求。那么这篇将讲如何在yml文件 阅读全文
posted @ 2023-12-20 16:07 dack_deng 阅读(199) 评论(0) 推荐(0) 编辑
摘要:前言 说到接口自动化,那肯定少不了参数化,这也是pytest的一个特色之一,相比与unitest实现起来更加方便好用。实验参数化常见的就是使用@pytest.mark.parametrize在测试函数或类中定义多组参数,在用例中实现参数化。 # 参数化方式一 import pytest @pytes 阅读全文
posted @ 2023-12-15 17:45 dack_deng 阅读(369) 评论(0) 推荐(0) 编辑
摘要:前言 每一条pytest用例都可以添加fixture的前置功能,只需要在用例的参数中传入在conftest.py文件中写的函数的名称就可以实现每条用例的前置和后置。 1. yaml文件中加入fixture的功能 因为我们实现了动态生成测试用例,所以我们可以直接通过在生成动态用例的时候就传入该fixt 阅读全文
posted @ 2023-12-11 11:23 dack_deng 阅读(130) 评论(0) 推荐(0) 编辑
摘要:前言 前面在yaml文件中引用内置函数以及自定义函数和变量时,都是在每个关键字后面进行单独得渲染,为了方便引用,于是我们单独对这块的内容进行封装。 1. 新增自定义函数和变量 在utils下新建自定义函数和变量的文件,my_builtins.py,新增了在接口中需要用到的一些变量和函数。这样,在传入 阅读全文
posted @ 2023-12-07 19:44 dack_deng 阅读(130) 评论(0) 推荐(0) 编辑
摘要:1. yaml文件中添加validate进行接口断言 首先我们在utils/validate.py文件添加需要的断言方式 import re def equals(check_value, expect_value): assert check_value == expect_value, f'{c 阅读全文
posted @ 2023-12-02 11:14 dack_deng 阅读(140) 评论(0) 推荐(0) 编辑
摘要:1. extract提取请求返回结果的返回值 在进行接口自动化的时候,往往需要提取上一个接口返回的值,传递给下一个接口使用。 创建utils/extract.py import json import re import jsonpath import jmespath from utils imp 阅读全文
posted @ 2023-12-01 17:31 dack_deng 阅读(164) 评论(0) 推荐(1) 编辑
摘要:1. pytest内置fixture 的caplog的配置 pytest 自动捕获级别为 WARNING 或以上的日志消息,并以与捕获的 stdout 和 stderr 相同的方式在每个失败测试的各自部分中显示它们。 日志级别如下,级别由低到高 DEBUG INFO WARNING ERROR CR 阅读全文
posted @ 2023-12-01 10:09 dack_deng 阅读(125) 评论(0) 推荐(0) 编辑
摘要:前言 前面几个章节,我们主要是如何通过yaml文件的数据自动转换成测试用例,并按照关键字去执行,如下是之前我们通过参数化的形式手动执行用例。 from utils.run import RunByKey # 获取文件路径 file_path = Path(__file__).parent.joinp 阅读全文
posted @ 2023-11-28 21:08 dack_deng 阅读(399) 评论(0) 推荐(0) 编辑
摘要:前言 在第一篇文章中,我们讲过了通过钩子函数pytest_collect_file可以收集到yaml格式的用例,并且可以生成测试用例。 想要动态生成测试用例,也就是动态生成测试函数,然后pytest收集到test开头的func,执行测试函数。关键代码如下所示: def run_function(*a 阅读全文
posted @ 2023-11-27 20:37 dack_deng 阅读(316) 评论(0) 推荐(0) 编辑
摘要:前言:上篇使用jinja2模板渲染数据是在读取yaml文件的时候,进行渲染。这种肯定不是关键字框架的渲染的方式。正常我们想要的而是在yaml文件中写入我们想要渲染的数据,然后读取之后渲染到测试yaml用例中。 1. 在yaml文件中引入变量 由于变量在yaml中先声明,后引用,所以不能直接渲染整个y 阅读全文
posted @ 2023-11-25 14:49 dack_deng 阅读(4992) 评论(2) 推荐(0) 编辑
摘要:前言:引用渲染变量的模板有2个,一个是字符串模板,另一个是Jinja2模板 1. 字符串模板 1.1.1 通过字符串格式化方法进行渲染需要渲染的变量: name = "dack" age = 23 x = 'my name is %s, my age is %d' % (name, age) pri 阅读全文
posted @ 2023-11-24 18:14 dack_deng 阅读(597) 评论(0) 推荐(0) 编辑
摘要:1. 封装request运行方法 我们将测试数据写到yaml文件中,通常会使用pytest框架parametrize参数化的方式读取yaml文件数据生成测试用例,于是我们可以根据这个思路来开发。 # utils/request_session.py import requests import re 阅读全文
posted @ 2023-11-24 11:33 dack_deng 阅读(278) 评论(0) 推荐(0) 编辑
摘要:1.pytest收集测试用例规则 pytest框架在收集用例的时候,默认会查找test_开头的.py 模块,并且在模块中找到test_ 开头的函数或Test开头的类。 根据这个规则,如果我们想收集yaml格式的文件当用例执行,需解决2个问题: 1.修改用例收集规则,改成收集yaml格式文件作为收集的 阅读全文
posted @ 2023-11-23 10:14 dack_deng 阅读(342) 评论(1) 推荐(0) 编辑

点击右上角即可分享
微信分享提示