pytest fixture 创建一个 requests.session() 对象

当你运行这段代码时,它会执行以下操作:

  1. 导入必要的库:`pytest` 和 `requests`。

  2. 定义一个夹具(fixture)函数 `session`,使用 `@pytest.fixture(scope='session')` 装饰器进行标记。这个夹具函数在整个测试会话期间只会被执行一次。

  3. 在 `session` 夹具函数中,创建一个 `requests.session()` 对象,这是一个会话级别的对象,可以在多个请求之间保持会话状态。

  4. 使用 `yield` 关键字返回会话对象。`yield` 之前的代码在测试会话开始时执行,`yield` 之后的代码在测试会话结束时执行。

  5. 定义一个测试用例函数 `test_login`,它接受 `session` 夹具作为参数。在这个函数中,我们使用会话对象的 `post()` 方法发送一个登录请求到指定的 URL,并传递用户名和密码作为请求数据。然后,我们打印出响应的文本内容,并将响应对象返回。

  6. 定义另一个测试用例函数 `test_logout`,也接受 `session` 夹具作为参数。在这个函数中,我们使用会话对象的 `post()` 方法发送一个登出请求到指定的 URL。然后,我们打印出响应的文本内容。

  7. 最后的 `if name == 'main':` 代码块用于在命令行中执行测试。它使用 `pytest.main()` 函数来运行测试文件,并通过 `'-v', 'test_crm.py'` 参数指定了运行的选项。`-v` 参数表示以详细模式运行测试,显示每个测试用例的结果。

通过使用 `pytest` 和 `requests` 库,这段代码提供了一个简单的框架来执行接口自动化测试。你可以根据需要添加更多的测试用例函数,并在每个函数中使用会话对象来发送请求和验证响应。

python 复制代码
import pytest
import requests

@pytest.fixture(scope='session')
def session():
    # 创建一个会话对象
    session = requests.session()
    # 返回会话对象
    yield session
    # 在测试会话结束后关闭会话
    session.close()

def test_login(session):
    url = 'http://xxx.123.74.26:8090/login'
    data = {
        "username": "1391110002",
        "password": "123456"
    }

    res = session.post(url=url, data=data)
    print(res.text)
    return res

def test_logout(session):
    url = 'http://82.xxx.24.26:8090/logout'
    res = session.post(url=url)
    print(res.text)

if __name__ == '__main__':
    pytest.main(['-v','test_crm.py'])
相关推荐
quantdash_cc16 小时前
历史数据断层与REST请求慢到崩溃?QuantDash高性能量化数据API终极解决方案
开发语言·python·缓存·php·量化·quantdash
熊野君16 小时前
Prompt / RAG / 规则 / Skills —— 定位、协作与实现路线
开发语言·python
zhangphil16 小时前
Python Web后端框架FastAPI vs Flask
python·ai·llm
ly768917 小时前
XML 从入门到实践:语法、命名空间、XPath、XSD 与 Java 安全解析
xml·java·python
winfredzhang17 小时前
用 Python + wxPython 造一个照片工具箱:PDF / 加密ZIP / MP4 / 归档,以及我在这过程中踩到的 4 个坑
python·pdf·zip·mp4·移动
卷无止境17 小时前
FastAPI 后台任务的边界,以及 Celery、Redis 与自建调度系统的选择
后端·python
卷无止境17 小时前
Linux + Docker + FastAPI 工程化实践指南
后端·python·fastapi
聪明蛋子哟1 天前
Stagehand v3多语言SDK:Python/Go/Rust/Java下的浏览器自动化统一方案
python·golang·rust
今天AI了吗1 天前
Python 基础语法(一):常量、变量、输入输出与运算符
开发语言·数据库·人工智能·python·sql·深度学习·机器学习