Avocado使用手册(1) --环境安装部分 (For Big Cloud Enterprise Linux 7.2)

1. avocado安装

  • 可以从Avocado项目RPM存储库获得Enterprise Linux的Avocado软件包。此外,EPEL仓库中的一些包是必需的,因此您需要先启用它。对于EL7,运行以下命令应该这样做:
    yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
  • 然后,您必须使用Avocado项目RHEL repo(https://avocado-project.org/data/repos/avocado-el.repo)
  • 运行以下命令应该为您提供基本的Avocado安装准备:
    curl https://avocado-project.org/data/repos/avocado-el.repo -o /etc/yum.repos.d/avocado.repo
  • 执行安装
    yum install python-avocado
    • 其他可用软件包(取决于Avocado版本)可能包括:
      python-avocado-examples:包含示例测试和其他示例文件
      python2-avocado-plugins-output-html:HTML作业报告插件
      python2-avocado-plugins-resultsdb:将作业结果传播到Resultsdb
      python2-avocado-plugins-runner-remote:在远程计算机上执行作业
      python2-avocado-plugins-runner-vm:在基于libvirt的VM上执行作业
      python2-avocado-plugins-runner-docker:在Docker容器上执行作业
      python-avocado-plugins-varianter-yaml-to-mux:将YAML文件解析为变体
      python2-avocado-plugins-varianter-pict:PICT具有组合功能的varianter
      LTS(长期稳定性)存储库也可用于Enterprise Linux。请参阅RFC:长期稳定性以及有关如何切换到avocado-ltsrepo的软件包管理文档 。
      yum install -y python-avocado-examplesyum install -y python2-avocado-plugins-output-html

2. avocado使用

2.1 简单测试

[root@el7 ~]# avocado run /bin/true 
JOB ID     : 093d3b5f608142cb230991044fc0bb9d845b32cf
JOB LOG    : /root/avocado/job-results/job-2018-09-21T03.03-093d3b5/job.log
 (1/1) /bin/true: PASS (0.03 s)
RESULTS    : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME   : 0.63 s

2.2 列表测试

您有两种方法来发现测试。

  • 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
 (1/1) /bin/true: SKIP
RESULTS    : PASS 0 | ERROR 0 | FAIL 0 | SKIP 1 | WARN 0 | INTERRUPT 0
JOB TIME   : 0.10 s
JOB HTML   : /tmp/avocado-dry-runSeWniM/job-2015-10-16T15.46-0000000/html/results.html
  • 2.另一种方法是使用list列出已发现测试的子命令如果没有提供参数,Avocado会为每个插件列出“默认”测试。输出可能如下所示:
$ avocado list
INSTRUMENTED /usr/share/doc/avocado/tests/abort.py
INSTRUMENTED /usr/share/doc/avocado/tests/datadir.py
INSTRUMENTED /usr/share/doc/avocado/tests/doublefail.py
INSTRUMENTED /usr/share/doc/avocado/tests/doublefree.py
INSTRUMENTED /usr/share/doc/avocado/tests/errortest.py
INSTRUMENTED /usr/share/doc/avocado/tests/failtest.py
INSTRUMENTED /usr/share/doc/avocado/tests/fiotest.py
INSTRUMENTED /usr/share/doc/avocado/tests/gdbtest.py
INSTRUMENTED /usr/share/doc/avocado/tests/gendata.py
INSTRUMENTED /usr/share/doc/avocado/tests/linuxbuild.py
INSTRUMENTED /usr/share/doc/avocado/tests/multiplextest.py
INSTRUMENTED /usr/share/doc/avocado/tests/passtest.py
INSTRUMENTED /usr/share/doc/avocado/tests/sleeptenmin.py
INSTRUMENTED /usr/share/doc/avocado/tests/sleeptest.py
INSTRUMENTED /usr/share/doc/avocado/tests/synctest.py
INSTRUMENTED /usr/share/doc/avocado/tests/timeouttest.py
INSTRUMENTED /usr/share/doc/avocado/tests/warntest.py
INSTRUMENTED /usr/share/doc/avocado/tests/whiteboard.py
...

2.3 复杂测试

您可以按任意顺序运行任意数量的测试,以及混合和匹配检测和简单测试:

$ avocado run failtest.py sleeptest.py synctest.py failtest.py synctest.py /tmp/simple_test.sh
JOB ID    : 86911e49b5f2c36caeea41307cee4fecdcdfa121
JOB LOG   : $HOME/avocado/job-results/job-2014-08-12T15.42-86911e49/job.log
 (1/6) failtest.py:FailTest.test: FAIL (0.00 s)
 (2/6) sleeptest.py:SleepTest.test: PASS (1.00 s)
 (3/6) synctest.py:SyncTest.test: PASS (2.43 s)
 (4/6) failtest.py:FailTest.test: FAIL (0.00 s)
 (5/6) synctest.py:SyncTest.test: PASS (2.44 s)
 (6/6) /tmp/simple_test.sh.1: PASS (0.02 s)
RESULTS    : PASS 4 | ERROR 0 | FAIL 2 | SKIP 0 | WARN 0 | INTERRUPT 0
JOB TIME   : 5.98 s
JOB HTML  : $HOME/avocado/job-results/job-2014-08-12T15.42-86911e49/html/results.html
  • 在第一次失败的测试中中断作业(failfast)
    –failfast on
[root@el7 ~]# avocado run failtest.py sleeptest.py synctest.py failtest.py synctest.py /tmp/simple_test.sh --failfast on
JOB ID     : b30513ac28a6a7978ff3bdd0e5d0630ebfa9dc31
JOB LOG    : /root/avocado/job-results/job-2018-09-21T03.24-b30513a/job.log
(1/6) failtest.py:FailTest.test: FAIL: This test is supposed to fail (0.05 s)
Interrupting job (failfast).
RESULTS    : PASS 0 | ERROR 0 | FAIL 1 | SKIP 5 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME   : 0.58 s
JOB HTML   : /root/avocado/job-results/job-2018-09-21T03.24-b30513a/results.html
  • 当测试中有BAD脚本的时候,测试将不能进行,需要添加–ignore-missing-references on 参数忽略缺失BAD脚本。默认参数为 OFF 。
    –ignore-missing-references on
未添加参数
$ avocado run passtest.py badtest.py
Unable to resolve reference(s) 'badtest.py' with plugins(s) 'file', 'robot', 'external', try running 'avocado list -V badtest.py' to see the details.
添加参数后
$ avocado run passtest.py badtest.py --ignore-missing-references on
Unable to resolve reference(s) 'badtest.py' with plugins(s) 'file', 'robot', 'external', try running 'avocado list -V badtest.py' to see the details.
JOB ID     : 85927c113074b9defd64ea595d6d1c3fdfc1f58f
JOB LOG    : $HOME/avocado/job-results/job-2017-05-17T10.54-85927c1/job.log
 (1/1) passtest.py:PassTest.test: PASS (0.02 s)
RESULTS    : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0 | CANCEL 0
JOB TIME   : 0.11 s
JOB HTML   : $HOME/avocado/job-results/job-2017-05-17T10.54-85927c1/html/results.html

2.4 使用外部运行器运行测试

$ echo "exit 0" > /tmp/pass
$ echo "exit 1" > /tmp/fail
$ avocado run --external-runner=/bin/sh /tmp/pass /tmp/fail
JOB ID     : 4a2a1d259690cc7b226e33facdde4f628ab30741
JOB LOG    : /home/<user>/avocado/job-results/job-<date>-<shortid>/job.log
(1/2) /tmp/pass: PASS (0.01 s)
(2/2) /tmp/fail: FAIL (0.01 s)
RESULTS    : PASS 1 | ERROR 0 | FAIL 1 | SKIP 0 | WARN 0 | INTERRUPT 0
JOB TIME   : 0.11 s
JOB HTML   : /home/<user>/avocado/job-results/job-<date>-<shortid>/html/results.html
$ avocado run --external-runner=/bin/curl http://local-avocado-server:9405/jobs/ \
                                       http://remote-avocado-server:9405/jobs/
JOB ID     : 56016a1ffffaba02492fdbd5662ac0b958f51e11
JOB LOG    : /home/<user>/avocado/job-results/job-<date>-<shortid>/job.log
(1/2) http://local-avocado-server:9405/jobs/: PASS (0.02 s)
(2/2) http://remote-avocado-server:9405/jobs/: FAIL (3.02 s)
RESULTS    : PASS 1 | ERROR 0 | FAIL 1 | SKIP 0 | WARN 0 | INTERRUPT 0
JOB TIME   : 3.14 s
JOB HTML   : /home/<user>/avocado/job-results/job-<date>-<shortid>/html/results.html

3. 调试测试

3.1 显示测试进行过程

在开发新测试时,您经常需要直接查看作业日志,而无需切换屏幕或不必“tailf”作业日志。为此,您可以使用或 选项:

  • avocado --show test run …
    • avocado run --show-job-log …
$ avocado --show test run examples/tests/sleeptest.py
...
Job ID: f9ea1742134e5352dec82335af584d1f151d4b85

START 1-sleeptest.py:SleepTest.test

PARAMS (key=timeout, path=*, default=None) => None
PARAMS (key=sleep_length, path=*, default=1) => 1
Sleeping for 1.00 seconds
PASS 1-sleeptest.py:SleepTest.test

Test results available in $HOME/avocado/job-results/job-2015-06-02T10.45-f9ea174

3.2 中断测试

  • 中断可以使用ctrl+c,一次按下后将SIGTERM发送到主测试的进程并等待它完成。如果这没有帮助,用户可以ctrl+c再次按下(在2s宽限期后),这会非常有效地破坏测试过程并安全地完成作业执行,始终提供测试结果。
  • 要暂停测试执行,用户可以使用ctrl+z哪个发送SIGSTOP 到从测试的PID继承的所有进程。我们尽力停止所有进程,但操作不是原子操作,可能无法停止某些新进程。另一个ctrl+z发送SIGCONT到测试的PID继承的所有进程恢复执行。请注意,测试执行时间(关于测试超时)仍然在测试进程停止时运行。
  • Avocado功能也可以中断测试。一个例子是使用GDB 调试 GDB 调试功能。

猜你喜欢

转载自blog.csdn.net/qq_28399355/article/details/84649323