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

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.断言还没加

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐