python assert封装
时间: 2024-08-15 16:00:51 浏览: 61
在Python中,`assert`关键字用于测试某个条件是否为真。它不是严格的错误处理机制,而是一种断言工具,用于检查程序运行过程中的假设是否成立。当你在一个代码块的开头添加一个`assert`语句,比如 `assert condition`, 如果`condition`为`False`,程序会立即停止执行,并显示一个AssertionError,通常包含你在assert后面的表达式内容。
`assert`常用于调试阶段,帮助开发者快速定位到预期结果未满足的地方。它的基本语法是:
```python
assert expression, "custom message"
```
这里的`expression`是你想要验证的条件,如果这个表达式的值为`False`,就会抛出异常,`custom message`是可选的,当提供时会在AssertionError中显示,有助于理解失败的原因。
相关问题
python assert判断完,只统计成功或者失败,程序不终止
Python 中的 `assert` 语句用于检查某个条件是否为真,如果条件为假,则会抛出一个 AssertionError 异常。默认情况下,当这个异常发生时,程序会停止执行并显示错误信息。但是,如果你想在测试完成后仅统计成功或失败的数量而不停止程序,你可以采取一些技巧:
1. **使用 try-except 结构**:将 `assert` 放在一个 `try` 块中,并在 `except` 块捕获 `AssertionError`。这样,即使 `assert` 失败,程序也不会立即终止。
```python
success_count = 0
failure_count = 0
for test_case in cases_to_test:
try:
assert condition, f"Test case {test_case} failed"
success_count += 1
except AssertionError as e:
failure_count += 1
print(f"{test_case}: {str(e)}")
print(f"Success count: {success_count}, Failure count: {failure_count}")
```
2. **自定义异常处理**:创建一个简单的函数封装 `assert`,返回一个布尔值表示测试结果。这样可以避免直接抛出异常。
```python
def test_condition(condition, message):
if not condition:
return False, message
else:
return True, "Pass"
result, msg = test_condition(some_condition, "Custom error message")
if result:
print("Pass")
else:
print(f"Fail: {msg}")
# 统计结果
```
python airtest 封装
对于使用Python编写的Airtest自动化测试框架,可以进行封装以提高测试脚本的复用性和可维护性。下面是一个简单的示例代码,演示了如何封装Airtest的常见功能:
```python
from airtest.core.api import *
from airtest.core.android import *
from airtest.core.cv import *
import time
class AirtestWrapper:
def __init__(self, device_id=None):
self.device_id = device_id
def connect_device(self):
if self.device_id:
connect_device('Android:///' + self.device_id)
else:
connect_device('Android')
def install_app(self, apk_path):
install(apk_path)
def start_app(self, package_name):
start_app(package_name)
def stop_app(self, package_name):
stop_app(package_name)
def click(self, image_path):
touch(Template(image_path))
def swipe(self, start_point, end_point, duration=1.0):
swipe(start_point, end_point, duration=duration)
def wait(self, seconds):
time.sleep(seconds)
def assert_exists(self, image_path):
assert_exists(Template(image_path))
def assert_not_exists(self, image_path):
assert_not_exists(Template(image_path))
```
你可以根据实际需要添加或修改封装的功能。然后,可以通过创建`AirtestWrapper`对象并调用其中的方法来执行测试操作,如下所示:
```python
wrapper = AirtestWrapper(device_id='your_device_id')
wrapper.connect_device()
wrapper.install_app('path/to/your/app.apk')
wrapper.start_app('com.example.app')
wrapper.click('path/to/your/image.png')
wrapper.swipe((100, 200), (300, 400), duration=1.5)
wrapper.wait(2)
wrapper.assert_exists('path/to/your/image.png')
wrapper.stop_app('com.example.app')
```
这样,你就可以通过封装的方式简化Airtest脚本的编写和维护。
阅读全文