首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python测试API

用Python测试API
EN

Stack Overflow用户
提问于 2022-10-05 10:43:43
回答 1查看 109关注 0票数 0

我正在使用为API编写一些测试。

测试的内容如下:

代码语言:javascript
复制
def test_stackoverflow():
    response = stackoverflow(parameter1, parameter2)
    assert response.status_code == HTTPStatus.OK
    data = response.json()
    assert type(data['name']) is str
    assert data['lastname'] == "Wilson"

在包含实际API调用的另一个文件中调用函数:

代码语言:javascript
复制
def stackoverflow(parameter1, parameter2):
    return my_session.post("/api/endpoint",
                        params={
                            "parameter1": parameter1,
                            "parameter2": parameter2
                        })

这种结构有两个主要问题:

  1. 在编写测试时,我必须记住/重新检查参数的名称(如示例中的namelastname )。
  2. 如果参数的名称发生变化,则必须在任何地方手动更改它。

我怎样才能解决这些问题?

EN

回答 1

Stack Overflow用户

发布于 2022-10-05 19:42:35

所以我不能百分之百肯定,我理解你的问题,但让我说两件事:

(1)我的函数堆栈溢出有硬编码的参数。我们不能改变吗?

是的,我们可以!阅读适当的kwargs的使用,它引入关键词参数,这样您就可以制定API调用函数,如下所示:

代码语言:javascript
复制
def stackoverflow(**kwargs):
    return my_session.post("/api/endpoint", params=kwargs)

只是,在本例中,您必须按如下方式调用该函数:

代码语言:javascript
复制
response = stackoverflow(key1=val1, key2=val2)

然后将两个查询/url参数传递给API-调用,即key1和key2,其值分别为val1和val2。

(2)我必须为每个测试修复参数。对于我需要的所有测试,我不能在全球范围内这样做吗?

是的,先生/妈妈!使用非常有用的夹具-装饰工可以通过为任何需要的地方定义参数来极大地简化生活。

旁边的小注释:尝试将isinstance用于类型断言,例如isinstance(数据‘’name‘,str)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73959252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档