Avocado 安装和简单测试
1.Avocado 安装
1.1 通过包安装
像Fedora可以通过rpm包进行安装,其他通过RPM管理的发行版需要自己制作相关包。Avocado同样支持DEP包的安装可以在contrib/packages/debian找到。
Fedora
首先通过下面的命令获取仓库配置文件。
sudo curl https://repos-avocadoproject.rhcloud.com/static/avocado-fedora.repo -o /etc/yum.repos.d/avocado.repo
检查是否有了Avocodo和Avocado-lts的仓库配置:
sudo dnf repolist avocado avocado-lts
...
repo id repo name status
avocado Avocado 50
avocado-lts Avocado LTS (Long Term Stability) disabled
Avocao了解更多的LTS信息,参考Avocado Long Term Stability
接下来,可以进行avocado安装啦:
sudo dnf install avocado
另外还有两个包需要安装:
- avocado-examples: 包含测试例子和示例文件
- avocado-plugins-output-html: HTML job 报告的插件
RHEL7
如果要运行在红帽商业版或CentOS上,需要进行下面设置:
# If not already, enable epel (for RHEL7 it's following cmd)
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# Add avocado repository and install avocado
sudo curl https://repos-avocadoproject.rhcloud.com/static/avocado-el.repo -o /etc/yum.repos.d/avocado.repo
sudo yum install avocado
同fedora一样,需要安装以下包:
- avocado-examples: 包含测试例子和示例文件
- avocado-plugins-output-html: HTML job 报告的插件
OpenSUSE
Avocado同样支持,执行运行以下命令即可:
sudo zypper install avocado
1.2 源码安装
首先确保系统有基本的编译环境,如fedora:
sudo yum install -y git gcc python-devel python-pip libvirt-devel libyaml-devel redhat-rpm-config xz-devel
然后,获取源码:
git clone git://github.com/avocado-framework/avocado.git
cd avocado
sudo make requirements
sudo python setup.py install
注意,python和pip需要2.7.x版本。如果安装出现问题,需要指明python2.7 和 pip2.7.
Avocodo可能需要一些插件:
cd optional_plugins/html
sudo python setup.py install
安装python依赖工具
avocado可以通过pip安装。
pip install avocado-framework
注意:只有基本的avocado基本的test runner安装,导入插件时可能会失败,需要根据不同的系统安装不同的依赖。
如果想安装全部插件,需要执行以下命令:
pip install -r https://raw.githubusercontent.com/avocado-framework/avocado/master/requirements.txt
2. Avocado使用
首先要使用命令行工具test runner,用来运行你的测试和收集测试结果。
2.1 运行测试
可以运行avocado加 run子命令,后面跟一个测试,例如:
$ avocado run /bin/true
JOB ID : 381b849a62784228d2fd208d929cc49f310412dc
JOB LOG : $HOME/avocado/job-results/job-2014-08-12T15.39-381b849a/job.log
TESTS : 1
(1/1) /bin/true: PASS (0.01 s)
RESULTS : PASS 1 | ERROR 0 | FAIL 0 | SKIP 0 | WARN 0 | INTERRUPT 0
TESTS TIME : 0.01 s
JOB HTML : $HOME/avocado/job-results/job-2014-08-12T15.39-381b849a/html/results.html
可以看到,我们把/bin/true作为一个测试运行,并记录了测试过程。这是一个简单的例子,这是支持测试的一种类型。Test Types了解更多的测试类型。
注意: 尽管可以通过 avocao run \(test1 $test3... 运行多个测试,但可以导致崩溃。一个安全的方式为: avocodo run --\)argument1 --$argument2 -- $test1 $test2. 后面所有内容都会当做位置参数。
2.2 列出测试项
有两种方式覆盖这些测试。可以通过--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
另一个方式是使用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
INSTRUMENTED /usr/share/avocado/tests/fiotest.py
INSTRUMENTED /usr/share/avocado/tests/gdbtest.py
INSTRUMENTED /usr/share/avocado/tests/gendata.py
INSTRUMENTED /usr/share/avocado/tests/linuxbuild.py
INSTRUMENTED /usr/share/avocado/tests/multiplextest.py
INSTRUMENTED /usr/share/avocado/tests/passtest.py
INSTRUMENTED /usr/share/avocado/tests/sleeptenmin.py
INSTRUMENTED /usr/share/avocado/tests/sleeptest.py
INSTRUMENTED /usr/share/avocado/tests/synctest.py
INSTRUMENTED /usr/share/avocado/tests/timeouttest.py
INSTRUMENTED /usr/share/avocado/tests/trinity.py
INSTRUMENTED /usr/share/avocado/tests/warntest.py
INSTRUMENTED /usr/share/avocado/tests/whiteboard.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
Type file
NOT_A_TEST examples/gdb-prerun-scripts/README
NOT_A_TEST examples/gdb-prerun-scripts/pass-sigusr1 SIMPLE: 0
INSTRUMENTED: 0
MISSING: 0
NOT_A_TEST: 2
3.编写一个简单的测试
下面是一个simple测试的简单示例:
$ echo '#!/bin/bash' > /tmp/simple_test.sh
$ echo 'exit 0 ' >> /tmp/simple_test.sh
$ chmod +x /tmp/simple_test.sh
注意,我们给这个文件增加了执行权限,它会被avocado当做一个simple test.
4.运行一个较复杂的测试
你可以以任意顺序执行任意数量的测试,而且可以混合不同类型的测试:
$ 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
TESTS : 6
(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) /bin/true: PASS (0.00 s)
(6/6) /tmp/simple_test.sh.1: PASS (0.02 s)
RESULTS : PASS 2 | ERROR 2 | FAIL 2 | SKIP 0 | WARN 0 | INTERRUPT 0
TESTS TIME : 5.88 s
JOB HTML : $HOME/avocado/job-results/job-2014-08-12T15.42-86911e49/html/results.html
5.出现fail后中断测试
Avocado run命令包含 --failfast on 参数,当出现错误是会退出测试:
$ avocado run --failfast on /bin/true /bin/false /bin/true /bin/true
JOB ID : eaf51b8c7d6be966bdf5562c9611b1ec2db3f68a
JOB LOG : $HOME/avocado/job-results/job-2016-07-19T09.43-eaf51b8/job.log
TESTS : 4
(1/4) /bin/true: PASS (0.01 s)
(2/4) /bin/false: FAIL (0.01 s)
Interrupting job (failfast).
RESULTS : PASS 1 | ERROR 0 | FAIL 1 | SKIP 2 | WARN 0 | INTERRUPT 0
TESTS TIME : 0.02 s
JOB HTML : /home/apahim/avocado/job-results/job-2016-07-19T09.43-eaf51b8/html/results.html
6.通过外部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
JOB ID : 4a2a1d259690cc7b226e33facdde4f628ab30741
JOB LOG : /home/<user>/avocado/job-results/job-<date>-<shortid>/job.log
TESTS : 2
(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
TESTS TIME : 0.01 s
JOB HTML : /home/<user>/avocado/job-results/job-<date>-<shortid>/html/results.html
这个例子很明显,可以通过给/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/
JOB ID : 56016a1ffffaba02492fdbd5662ac0b958f51e11
JOB LOG : /home/<user>/avocado/job-results/job-<date>-<shortid>/job.log
TESTS : 2
(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
TESTS TIME : 3.04 s
JOB HTML : /home/<user>/avocado/job-results/job-<date>-<shortid>/html/results.html
这个例子是把”/bin/curl“当做"external test runner".
7. 测试调试
当开发一个新的测试时,经常做的就是查看一个测试job的运行日志。 为了实现这个目的, 可以通过 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 UI输出被抑制,只显示作业日志,这使得它成为测试开发和调试的有用功能。
详细的文档访问:https://avocado-framework.readthedocs.io/en/latest/WritingTests.html
Avocado 安装和简单测试的更多相关文章
- kafka安装和简单测试
kafka安装和简单测试 # 安装zookeeper(apache-zookeeper-3.5.6-bin)https://archive.apache.org/dist/zookeeper/zook ...
- NLTK的安装与简单测试
1.NLTK简介 Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库.NLTK是一个开源的项目,包含:Python模块,数据集和教程,用 ...
- Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)
Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...
- PTF 安装及简单测试 Packet Testing Framework
PTF PTF is a Python based dataplane test framework. It is based on unittest, which is included in th ...
- scapy 安装及简单测试
关于scapy Scapy的是一个强大的交互式数据包处理程序(使用python编写).它能够伪造或者解码大量的网络协议数据包,能够发送.捕捉.匹配请求和回复包等等.它可以很容易地处理一些典型操作,比如 ...
- Sqoop 安装与简单测试
sqoop基于Hadoop与Hive Hadoop https://www.cnblogs.com/xibuhaohao/p/11772031.html Hive https://www.c ...
- websphere8 从安装到部署 测试集群应用程序 安装j2ee程序(非常详细)
目录1. 准备安装文件2. 安装Installation Manager3. 为Installation Manager指定安装资源库4. 创建部署管理器概要文件5. 创建定制概要文件并联合到部署管理 ...
- Docker安装canal、mysql进行简单测试与实现redis和mysql缓存一致性
一.简介 canal [kə'næl],译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费. 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求 ...
- (转)python requests的安装与简单运用
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的: python的标准库urllib ...
随机推荐
- 使用 AWK 來做垂直数字相加
原文链接 數字垂直加總 檔案內容 (num.txt) 123 加總: cat num.txt | awk '{sum += $1} END {print sum}' 輸出: 6 加總 Apache a ...
- 使用JAVASCRIPT进行数据完整性验证
页面输入完整性是编写BS经常遇到的问题,如果那里需要就到那里写,那可是要花不少的时候,并且造成不必要的浪费,下面是一个通过校验脚本,使用非常方便,通过传入FORM名就可以进行校验,通过在页面控件中增加 ...
- 23SpringMvc_各种参数绑定方式-就是<input那种
本篇博文转载自http://www.cnblogs.com/HD/p/4107674.html: SpringMVC的各种参数绑定方式 1. 基本数据类型(以int为例,其他类似):Controlle ...
- 从myspace数据库看分布式系统数据结构变迁[转]
MySpace已经成为全球众口皆碑的社区网站之王.尽管一流和营销和管理经验自然是每个IT企业取得成功的首要因素,但是我们却抛弃这一点,而主要着眼于探讨在数次面临系统扩张的紧急关头MySpace是如何从 ...
- JavaScript设计模式——观察者模式
观察者模式,又称发布-订阅模式或消息机制,定义了一种依赖关系,解决了主题对象与观察者之间功能的耦合. 通过运用观察者模式,可以解决团队开发中的模块间通讯问题,这是模块间解耦的一种可行方案. 首先,我们 ...
- shrink-to-fit(自适应宽度)
自适应宽度是指当未明白设定容器的宽度(或外边距设为auto)时,在特定的情况下容器的宽度会依据情况自行设定.而设定的结果往往并非我们想要的. W3C规范中描写叙述了几种shrink-to-fit的情况 ...
- shell脚本学习总结09--分支与循环结构
if 条件语句 = start ]];then echo start app elif [[ $ = stop ]];then echo stop appelif [[ $1 = ... ]];the ...
- 说说M451例程讲解之定时器
关于定时器 相信很多人都不会陌生,无论是51还是32,任何微控制器,都会有定时器 定时器控制器包含 4 组 32-位定时器,TIMER0~TIMER3,提供用户便捷的计数定时功能.定时器可执行很多功能 ...
- iOS 文件和数据管理 (可能会删除本地文件储存)
转自:http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgramm ...
- flask模块
import flask, json #把当前的文件当成一个服务 server = flask.Flask(__name__) @server.route('/index', methods=['ge ...