pytest 断言某个字符串不存在
时间: 2023-08-20 09:58:39 浏览: 129
可以使用 `assert` 关键字和 `not in` 运算符来实现断言某个字符串不存在,例如:
```python
def test_string_not_exists():
s = "hello world"
assert "goodbye" not in s
```
这个测试函数会断言字符串 "goodbye" 不在变量 `s` 中,如果断言失败则会抛出 AssertionError 异常。
相关问题
pytest中的断言方法
pytest是一个流行的Python测试框架,它提供了丰富的断言方法帮助开发者验证测试结果是否符合预期。以下是pytest中常用的几种断言方法:
1. `assert`: 这是最基本的断言方法,用于检查两个表达式是否相等。如果它们不相等,则会引发AssertionError。
```python
assert value == expected_value
```
2. `assert_equal` or `==`: 等价于上述的`assert`,用于比较数值、字符串或其他可比较的对象。
```python
assert a == b
```
3. `assert_not_equal` 或 `-eq`: 检查两个值是否不相等。
```python
assert a != b
```
4. `assert_in`: 验证某个值是否在一个序列或集合中。
```python
assert item in container
```
5. `assert_not_in`: 反之,验证某个值不在指定序列或集合中。
```python
assert item not in container
```
6. `pytest.raises(ExceptionType[, match])`: 验证特定异常是否在函数调用中被抛出。match参数可以用于检查异常消息。
```python
with pytest.raises(ZeroDivisionError):
divide_by_zero()
```
7. `assert_approx_equal(a, b, rel=1e-9, abs=0)`: 对近似值进行断言,允许一定的相对误差和绝对误差。
```python
import pytest
pytest.approx(a, rel=1e-9) # 使用这个装饰器
```
使用这些断言方法时,通常会在测试用例中配合`def test_function_name()`函数,并将断言嵌套其中。如果所有断言都通过,那么该测试被认为是成功的;如果有断言失败,pytest会报告详细的错误信息。
pytest 接口自动化 数据库断言
对于 pytest 接口自动化中的数据库断言,你可以使用一些库来实现。下面是一个示例代码,展示了如何使用 pytest 和 SQLAlchemy 进行数据库断言:
首先,确保你已经安装了 pytest 和 SQLAlchemy。可以使用以下命令进行安装:
```
pip install pytest
pip install SQLAlchemy
```
接下来,在你的测试文件中导入所需的库和模块:
```python
import pytest
from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker
```
然后,创建一个测试数据库连接并获取数据库会话:
```python
@pytest.fixture(scope='session')
def db_session():
# 创建数据库连接
engine = create_engine('your_database_connection_string')
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
yield session
# 在测试完成后关闭连接
session.close()
```
接下来,定义一个测试函数,在其中执行你的接口请求,并获取返回的数据。然后使用 SQLAlchemy 查询数据库并进行断言:
```python
def test_api(db_session):
# 执行接口请求
response = your_api_request()
# 获取接口返回的数据
# 查询数据库并断言
result = db_session.execute(text("SELECT * FROM your_table WHERE condition = :param"), {'param': value}).fetchall()
assert len(result) == expected_length
assert result[0].column_name == expected_value
```
在上面的代码中,你需要将 `'your_database_connection_string'` 替换为你自己的数据库连接字符串。同时,你需要根据你的实际情况修改查询语句和断言条件。
这就是一个简单的使用 pytest 和 SQLAlchemy 进行数据库断言的示例。你可以根据需要进行调整和扩展。希望对你有所帮助!如果你有任何进一步的问题,请随时提问。
阅读全文