跳转到主要内容

SST - 网络测试框架

项目描述

Web主页:

http://testutils.org/sst

项目主页:

https://launchpad.net/selenium-simple-test

PyPI:

http://pypi.python.org/pypi/sst

许可证:

Apache许可证,版本2.0

作者:

版权所有 (c) 2011-2013 Canonical Ltd.

使用Python进行自动化测试

SST(selenium-simple-test)是一个使用Python生成基于浏览器功能的测试的Web测试框架。

测试由脚本组成,这些脚本通过组合驱动浏览器和断言条件的动作来创建。您拥有完整的Python语言的灵活性,以及一组方便的函数来简化Web测试。

SST包括

  • Python中的用户操作和断言(API)

  • 测试用例加载器(将脚本生成/编译为unittest用例)

  • 控制台测试运行器

  • 数据参数化/注入

  • 可选输出报告

  • 可选浏览器

  • 无头(xvfb)模式

  • 错误时截图

测试输出显示在控制台,并且可以选择保存为JUnit兼容的XML格式,以与CI系统兼容。

安装

SST可以从PyPI使用pip安装。

pip install -U sst

例如,在Ubuntu/Debian系统上,您可以像这样安装SST(全局):

$ sudo apt-get install python-pip xvfb
$ sudo pip install -U sst

或者使用一个virtualenv

$ sudo apt-get install python-virtualenv xvfb
$ virtualenv ENV
$ source ENV/bin/activate
(ENV)$ pip install sst
  • 注意:xvfb仅在您想要以无头模式运行SST时需要。

示例SST测试脚本

SST中的一个示例测试用例

from sst.actions import *

go_to('http://www.ubuntu.com/')
assert_title_contains('Ubuntu')

使用SST运行测试

创建一个Python脚本(.py)文件,并添加您的测试代码。

然后从命令行调用您的测试脚本,使用sst-run

$ sst-run mytest
  • 注意:您不需要在测试调用中添加.py扩展名

操作参考(sst.actions)

测试脚本在浏览器中执行操作,就像用户一样。SST为您提供了在测试中使用的“操作”(函数)集。这些操作在以下API中定义

sst-run的命令行选项

用法:sst-run <options> [testname]

  • 使用测试名称(s)作为参数调用sst-run将仅运行这些测试。测试名称不应包含文件名末尾的‘.py’。

  • 您可以选择创建一个数据文件用于数据驱动测试。创建一个与测试同名的txt数据文件,并添加.csv扩展名,使用'^'分隔符。这将使用数据文件中的每一行运行测试(数据文件的第一行是变量名映射)

选项

-h, --help                show this help message and exit
-d DIR_NAME               directory of test case files
-r REPORT_FORMAT          report type: xml
-b BROWSER_TYPE           select webdriver (Firefox, Chrome, PhantomJS, etc)
-j                        disable javascript in browser
-m SHARED_MODULES         directory for shared modules
-q                        output less debugging info during test run
-V                        print version info and exit
-s                        save screenshots on failures
-x                        run browser in headless xserver (Xvfb)
--failfast                stop test execution after first failure
--debug                   drop into debugger on test fail or error
--with-flags=WITH_FLAGS   comma separated list of flags to run tests with
--disable-flag-skips      run all tests, disable skipping tests due to flags
--extended-tracebacks     add extra information (page source) to failure reports
--collect-only            collect/print cases without running tests
--test                    run selftests (acceptance tests with django server)

组织测试

为了逻辑组织测试,您可以使用文件系统中的目录。SST将递归地遍历您的目录树,并收集所有测试以执行。

例如,一个简单的测试设置可能如下所示:

/selenium-simple-test
    /mytests
        foo.py

您会从命令行调用此操作

$ sst-run -d mytests

更复杂的设置可能如下所示:

/selenium-simple-test
    /mytests
        /project_foo
            /feature_foo
                foo.py
        /project_bar
            feature_bar.py
            feature_baz.py
        /shared
            module.py
            utils.py

您仍然会像从命令行一样调用此操作

$ sst-run -d mytests

SST将在子目录中找到所有测试(包括符号链接)并执行它们。SST不会查看以下划线开头的目录。这允许您将Python包/模块直接放入您的测试目录中。更好的选项是使用共享目录。

在unittest测试套件中使用SST

SST使用unittest测试用例在内部包装脚本的执行,并处理启动和停止浏览器。如果您希望将一些SST测试集成到现有的unittest测试套件中,可以使用runtests.py中的SSTTestCase。

from sst.actions import *
from sst import runtests

class TestUbuntu(runtests.SSTTestCase):

    def test_ubuntu_home_page(self):
        go_to('http://www.ubuntu.com/')
        assert_title_contains('Ubuntu')

因此,在文件名test_ubuntu.py中,您可以运行测试(例如)

python -m unittest test_ubuntu.py

sst-run通过-x选项提供了一个无头xserver。 SSTTestCase通过两个类属性提供了相同的功能(具有相同的实现)。

xserver_headless当设置为True时,将为每个测试启动一个无头服务器(并在测试后停止)。如果您想要在多个测试之间共享同一服务器,请设置xvfb。然后您负责启动和停止此服务器(有关详细信息,请参阅src/sst/xvfbdisplay.pysrc/sst/tests/test_xvfb.py中的示例)。

共享目录

SST允许您在测试的顶级目录中有一个名为shared的目录,该目录被添加到sys.path。在这里,您可以保留所有测试使用的辅助模块。sst-run不会将shared目录中的Python文件作为测试运行。

默认情况下,SST将在指定的测试目录中查找shared,或者您可以使用-m命令行参数指定不同的目录。

如果测试目录中没有shared目录,那么将从前一个目录开始向上搜索,直到找到它。这允许您仅从子目录中运行测试,而无需明确指定共享目录的位置。

sst.config模块

在测试中,您可以导入 sst.config 模块,以了解当前测试环境的各种信息。sst.config 模块包含以下信息:

from sst import config

# is javascript disabled?
config.javascript_disabled

# which browser is being used?
config.browser_type

# full path to the shared directory
config.shared_directory

# full path to the results directory
config.results_directory

# flags for the current test run
config.flags

# A per test cache. A dictionary that is cleared at the start of each test.
config.cache

禁用 JavaScript

如果您需要禁用单个测试中的 JavaScript,可以在测试开始时添加以下内容:

JAVASCRIPT_DISABLED = True

在 Ubuntu/Debian 上进行开发

  • SST 主要在 Linux 上进行开发,特别是 Ubuntu。它应该在其他平台上运行良好,但任何问题(或者更好的是 - 补丁)都应该在 Launchpad 项目上进行报告。

  • 获取 SST Trunk 的副本,创建并激活一个虚拟环境,安装依赖项,并从 dev 分支运行 examples/self-tests

    $ sudo apt-get install bzr python-virtualenv xvfb
    $ bzr branch lp:selenium-simple-test
    $ cd selenium-simple-test
    $ virtualenv ENV
    $ source ENV/bin/activate
    (ENV)$ pip install -r requirements.txt
    (ENV)$ ./sst-run -d examples
  • (可选) 安装测试依赖项并运行 SST 的内部单元测试

    (ENV)$ pip install mock nose pep8
    (ENV)$ nosetests --match ^test_.* --exclude="ENV|testproject|selftests"
  • (可选) 安装 django 并运行 SST 的内部测试应用程序,使用验收测试

    (ENV)$ pip install django (ENV)$ ./sst-run –test -x

  • Launchpad 项目

  • 浏览源代码(Trunk)

  • 为了手动设置依赖项,SST 使用以下非标准库包

    • selenium

    • testtools

    • django (可选 - 仅用于内部自测试)

运行示例

SST 源代码存储库和软件包下载包含一些简单的示例脚本。

您可以从本地 sst 目录运行它们,如下所示:

$ ./sst-run -d examples

运行自测试

SST 源代码存储库和软件包下载包含一组基于包含的测试 Django 项目的自测试。

您可以从本地分支运行自测试套件(以及测试 Django 服务器),如下所示:

$ ./sst-run --test

项目详细信息


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分发

sst-0.2.4.tar.gz (171.2 kB 查看散列

上传时间

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面