Avocado自动化测试框架的安装和使用

Avocado自动化测试框架的安装和使用

关于安装

源码安装

  1. 获取源码(Git)

    git clone git://github.com/avocado-framework/avocado.git
    
  2. 源码下载需要Python2.7.x,下载Python2.7.x安装包。

  3. 将源码和Python2.7.x安装包上传到服务器(通过Xftp)

  4. Python2.7.x安装过程:

    • 解压安装包:

      tar xvf Python-2.7.9.tgz
      
    • 配置并且要指定安装的路径:

      cd Python-2.7.9
      ./configure --prefix=/usr/local/python2.7#这里prefix的含义是,安装之后的python路径放在/usr/local/python2.7目录里。
      
    • 编译和安装:

      make & make install
      
    • 创建链接

  5. 安装Avocado:

    cd avocado sudo make requirements 
    sudo python2.7 setup.py install
    可能出现报错信息:Traceback (most recent call last): File "setup.py", line 20, in 		<module>from setuptools import setup, find_packages ImportError: No module named 		setuptools
    解决办法:https://blog.csdn.net/newjueqi/article/details/47446965?locationNum=9&fps=1
    

在这里插入图片描述

从PYPI安装

最简单的安装方法是通过pip。在大多数具有Python 3.4(或更高版本)并pip可用的POSIX系统上,可以使用单个命令执行安装:

$ pip3 install --user avocado-framework

这将从PyPI存储库中获取Avocado软件包(以及可能的某些依赖项),并将尝试将其安装在用户的主目录中(通常位于~/.local)。

如果要执行系统范围的安装,请放下–user 开关。

过程可能报错pip版本需要升级,pip3 install --upgrade pip升级后再进行下载应该就ok了。

注:同上安装所需Python对应版本。

安装包安装

进入Python官网下载所需的avocado版本(我下载的是V74.0)

下载后进行解压安装

使用

运行测试

简单运行

可以运行avocado加 run子命令,后面跟一个测试 。 把/bin/true作为一个测试运行,并记录了测试过程。

$ avocado run /bin/true

注意: 尽管可以通过 avocao run (test1 KaTeX parse error: Can't use function '\)' in math mode at position 53: … avocodo run --\̲)̲argument1 --argument2 – $test1 $test2. 后面所有内容都会当做位置参数。

远端运行

avocado提供了一个通过ssh连接远端运行的用例的机制。

avocado run --remote-hostname 192.168.122.30 --remote-username root examples/tests/sleeptest.py examples/tests/failtest.py

运行较复杂的测试

可以以任意顺序执行任意数量的测试,而且可以混合不同类型的测试:

$ avocado run failtest.py sleeptest.py synctest.py failtest.py synctest.py /tmp/simple_test.sh

出现fail后中断测试

Avocado run命令包含 --failfast on 参数,当出现错误是会退出测试

$ avocado run --failfast on /bin/true /bin/false /bin/true /bin/true

通过外部Runner 运行测试

大部软件都存在自己的测试集。通常包括一个定制的runner,它可以找到并运行自己的测试。

Avocado能支持运行这些测试,而且可以支持生成不同格式的结果,收集系统信息以及这些测试(Avocado的sysinfo功能)等等。

$avocado run --external -runner=/path/to/external_runner foo bar baz
这个例子,avocado会产生foo bar baz的测试结果。实际结果将来源于执行 /path/to/external_runner foo /path/to/external_runner bar和/path/to/external_runner baz

另一种方式展示这一特性,就是思考“外部runner"可以是解释器和可以解释执行任何测试。UNIXshell,/bin/sh就可以被当做外部执行引擎,而且shell脚本就可以当成它的测试:

$ echo "exit 0" > /tmp/pass
$ echo "exit 1" > /tmp/fail
$ avocado run --external-runner=/bin/sh /tmp/pass /tmp/fail

这个例子很明显,可以通过给/tmp/pass和/tmp/fail ,shell“shebangs”(#!/ bin / sh)来实现,使它们可执行(chmod + x / tmp / pass / tmp / ,并将其作为“简单”测试运行。

$ avocado run --external-runner=/bin/curl http://local-avocado-server:9405/jobs/ \
http://remote-avocado-server:9405/jobs/
这个例子是把”/bin/curl“当做"external test runner"

列出测试项

有两种方式覆盖这些测试。

  1. 可以通过–dry-run 参数模拟:

    avocado run /bin/true --dry-run
    JOB ID     : 0000000000000000000000000000000000000000
    JOB LOG    : /tmp/avocado-dry-runSeWniM/job-2015-10-16T15.46-0000000/job.log
    TESTS      : 1
    (1/1) /bin/true: SKIP
    RESULTS    : PASS 0 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0
    TESTS TIME : 0.00 s
    JOB HTML   : /tmp/avocado-dry-runSeWniM/job-2015-10-16T15.46-0000000/html/results.html
    
  2. 使用list参数列出支持的测试参数。

    $ avocado list
    INSTRUMENTED /usr/share/avocado/tests/abort.py
    INSTRUMENTED /usr/share/avocado/tests/datadir.py
    INSTRUMENTED /usr/share/avocado/tests/doublefail.py
    INSTRUMENTED /usr/share/avocado/tests/doublefree.py
    INSTRUMENTED /usr/share/avocado/tests/errortest.py
    INSTRUMENTED /usr/share/avocado/tests/failtest.py
     ...
    这些测试文件被Avocodo视为包含在INSTRUMENTED测试。
    

    可以只列出可执行shell脚本:

    $ avocado list | grep ^SIMPLE
    SIMPLE       /usr/share/avocado/tests/env_variables.sh
    SIMPLE       /usr/share/avocado/tests/output_check.sh
    SIMPLE       /usr/share/avocado/tests/simplewarning.sh
    SIMPLE       /usr/share/avocado/tests/failtest.sh
    SIMPLE       /usr/share/avocado/tests/passtest.sh
    

    SIMPLE表示这些文件是一些简单的可执行的测试。 可以通过**–verbose 或 -V,列出avocado**中不是测试的文件。

    $ avocado list examples/gdb-prerun-scripts/ -V
    

编写测试

simple测试的简单实例

$ echo '#!/bin/bash' > /tmp/simple_test.sh
$ echo 'exit 0 ' >> /tmp/simple_test.sh
$ chmod +x /tmp/simple_test.sh
注意,我们给这个文件增加了执行权限,它会被avocado当做一个simple test.

配置文件说明

avocado config查看.config/avocado/avocado.conf

jobs tests概念说明

avocado run test.py这个运行相当于产生一个job,可以理解为一组测试套 。

avocado可以实现的功能说明

  1. 批量执行测试用例

    命令行执行意味着可以很方便的和jenkins等CI工具进行结合

  2. 每个测试用例在单独的进程中执行

    avocado测试框架中,每个测试会在独立的进程中执行,测试执行进程是runner进程的子进程
    至于子进程和父进程的关系,就要看具体在什么操作系统上了

  3. 信号处理

    发送到avocado主进程的信号会按照如下方式处理
    Ctrl+Z 会让执行用例的子进程暂停
    Ctrl+C 会让正在执行的子进程中止

  4. 保存测试日志方便定位

    avocado会在job-result目录下保存测试日志,出现问题可以通过查看日志方式进行定位

    /User/lichsh/avocado/job-results/latest/的索引

  5. 通过插件生成html格式测试报告

测试调试

当开发一个新的测试时,经常做的就是查看一个测试job的运行日志。 为了实现这个目的, 可以通过 avocado --show test run … 或 avocado run --show-job-log …

$avocado --show test run examples/tests/sleeptest.py
发布了1 篇原创文章 · 获赞 1 · 访问量 62

猜你喜欢

转载自blog.csdn.net/Sk_2_1/article/details/104017111