Python笔记

默认文件编码(UTF-8)

Squish 假设所有 test.py 文件都是 UTF-8 编码。

如果您预计将在 squishide 之外编辑此类文件,我们建议在每个 test.py 文件的开始处放置以下行

# -*- coding: utf-8 -*-

这仅仅是一个注释,但具有 Python 意识的编辑器会注意到它,并将正确地使用 Squish 预期的 UTF-8 编码加载和保存,结果如此。

其他文本编辑器(不识别上述表示)通常必须显式配置以使用 UTF-8 编码保存 Squish 测试脚本。

字符串返回值的默认类型(Unicode)

对于 Python 2.x,Squish API 函数返回字符串始终返回类型为 unicode 的字符串,而不是 str。因此,要检查类型,请使用 isinstance(string, unicode)isinstance(string, basestring)

Squish 的 Python 模块

Squish 的特定于 Python 的扩展模块将自动通过在挂接到或启动 AUT 之后内部执行以下语句进行加载

import test
import testData
import object
import objectMap
import squishinfo
from squish import *

squish 模块暴露的(函数、类等)对象取决于当前连接的应用程序。如果没有连接到应用程序(通过 ApplicationContext startApplication(autName)ApplicationContext attachToApplication(autName)),则此模块中的大多数对象将是缺失的,直到连接到应用程序。

这意味着除非您正在开发自己的独立 Python 模块,否则不需要您自己导入它们。有关在您自己的 Python 模块或包中使用上述模块的信息,请参阅在 Python 模块/包中使用 Squish 函数

Squish 隐藏的 Python 符号

squish 模块的通配符导入(from squish import *)意味着一些 Python 的内置对象被具有相同名称但完全不同行为的 Squish 对象隐藏

Squish 隐藏的对象有 objectboolintlongtype

但是,这种隐藏仅发生在测试脚本本身中(仅在执行测试用例时,而不是在使用 squishtest 模块时)。这意味着它不会在标准或自定义 Python 模块和包中使用。

在调用 startApplication()attachToApplication() 之后,可以恢复一些原始符号。

import sys
# Check if Python 3:
if sys.version_info[0] == 3:
  import builtins
else:
  # Make Python 2 look like Python 3:
  import __builtin__ as builtins

def main():
    startApplication("aut")
    restore_python_builtins()

def restore_python_builtins():
    global bool
    global int
    global long
    global pytype

    del bool
    del int
    del long

    pytype = builtins.type

不建议恢复 objecttype,因为它们用于 Squish 记录的代码片段中。

Squish 的 bool 与 Python 的 bool

Squish 的 bool 代表在包装器的 C 和 C++ 代码中用于 bool 的 Squish 类型。

与其他隐藏符号一样,要访问 Python 的 bool 类型,可以从模块 __builtin__(Python 2)或 builtins(Python 3)使用它。

Squish 的 int 与 Python 的 int

Squish 的 int 代表在包装器的 C 和 C++ 代码中用于整数的 Squish 类型。

与其他隐藏符号一样,要访问 Python 的 int 类型,可以从模块 __builtin__(Python 2)或 builtins(Python 3)使用它。

import sys
sys.path.append("my/path")

import squish

from squish import *

import squish

def do_something():
    squish.activateItem(squish.waitForObject(":Some_Menu"), "File")

  1. squishide
  2. 从squishrunner命令行
  3. 从使用squishtest模块的Python主程序。

Python 模块 squishtest 尝试通过提供完整的 Squish API 来复刻 squishrunner 的功能。成员被注入到这个模块中,就像它们通常被注入到 Squish 测试套件的全球命名空间一样。类似地,在调用 startApplicationattachToApplication 之后,适当的版本特定 API(例如 Qt、Mac、Windows、Web、Java)会动态地注入到模块中。

详细的设置步骤以及示例 Python 脚本可以在 这篇知识库文章 中找到。

Python 语言文档

除了 Squish 扩展 API,还提供了完整的 Python 语言功能和模块以供脚本化使用。《Python 文档》页面提供了对当前版本和旧版本的 Python 文档的链接。如果你更喜欢书籍,一本好的 Python 3 书是 Mark Summerfield 著的《Programming in Python 3》。

©2024 Qt 公司有限公司。此处的文档贡献包括各自所有者的版权。
本提供的文档受 GNU 自由文档许可 1.3 版本 的条款许可,由自由软件基金会发布。
Qt 和相关标志是芬兰和/或其他国家 Qt 公司的商标。所有其他商标均为各自所有者的财产。