python+requests+pytest 接口自动化框架(五)

一、接口自动化统一请求封装

class RequestsUtil:

    # 通过session会话去关联。session默认的情况下回自动的关联cookie
    session = requests.session()

    # 统一请求封装
    def send_request(self, name, method, url, **kwargs):
        rep = RequestsUtil.session.request(method, url, **kwargs)
        return rep

其它的参数用可变长度的字典**kwargs表示

二、接口自动化接口关联封装

通过yaml配置文件来处理接口关联

1 创建关联文件extract.yaml
2 操作文件

3 接口关联的使用

注:每次记得清除 extract.yaml

三、接口自动化多个基础路径封装

开发环境,测试环境,生产环境
一个项目中,在测试环境下,每个模块的基础路径都不一样.
商品管理:base_spgl_url
用户管理:base_yhgl_url

解决方案:

1.每个模块下都存在一个confitest.py文件。这个文件里面获取基础路径。

@pytest.fixture(scope="session", autouse=True)
def read_base_url():
    return read_config_yaml("base","base_phpwind_url")
confitest.yaml 写基础路径
base:
  base_weixin_url: https://api.weixin.qq.com
  base_phpwind_url: http://47.107.116.139
    @allure.story("访问phpwind论坛首页")
    def test_phpwind_index(self, read_base_url):
        urls = read_base_url + "/phpwind/"
        res = RequestsUtil().send_request("get", url=urls)
        write_extract_yaml({"csrf_token": re.search('name="csrf_token" value="(.*?)"', res.text).group(1)})

缺点:每次都要在方法里调用一下

2.在统计请求封装中,通过init方法去获取基础路径。

    def __init__(self, one_nodo, two_node):
        self.base_url = read_config_yaml(one_nodo, two_node)

    # 统一请求封装
    def send_request(self, method, url, **kwargs):
        # 基础路径拼接
        url = self.base_url+url
        rep = RequestsUtil.session.request(method, url, **kwargs)
        return rep
    def test_phpwind_index(self):
        urls = "/phpwind/"
        res = RequestsUtil("base","base_phpwind_url").send_request("get", url=urls)
        write_extract_yaml({"csrf_token": re.search('name="csrf_token" value="(.*?)"', res.text).group(1)})
如果在只写接口自动化测试用例代码,到这里就OK了。

四、其他功能

断言,加密,签名....
最终目的:希望把接口自动化框架封装完成之后,功能测试只需要写yaml格式的用例即
可,不需要写代码。
requests+yaml+pytest+allure
三层:yaml层,用例层,统计请求层。

五、问题

一个接口对应一个yaml,一个接口可能有很多用例(正例,反例)
1.很多重复代码
2.通过extarct.yaml实现的接口关联必须调用写入和读取的方法,那么是不是能够把这种关
联放到yaml里面去。反例没有access_token可以提取的,需要做判断。
3.yaml里面无法使用随机数方法。无法调用python里面的方法。
4.文件上传必须必须要写open方法读取文件路径。
5.断言还没加
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天草柑橘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值