美文网首页自动化
基于BDD的Gauge框架摘录

基于BDD的Gauge框架摘录

作者: 佛系小懒 | 来源:发表于2020-02-06 19:05 被阅读0次

Gauge安装

官网手册  github地址

(1) 修改文件:/etc/yum.repos.d/gauge-stable.repo

[gauge-stable]

name=gauge-stable

baseurl=http://dl.bintray.com/gauge/gauge-rpm/gauge-stable

gpgcheck=0

enabled=1

(2) sudo yum install gauge

(3) 安装ruby插件(gauge_setup):A:  ~/.gauge/config  B:  生成了'html-report'的插件;

(4) 安装语言:gauge --install java  gauge --install ruby  gauge --install spectacle gauge --install python

(5) 直接运行gauge –init java  然后运行 gauge spec 查看是否正常;

备注:如果中间抛出Exception in thread "main" java.lang.UnsupportedClassVersionError: com/google/common/base/Predicate : Unsupported major.minor version 52:定位是jdk版本问题,需要变更JDK版本;Java默认的配置文件:~/.gauge/plugins/java/0.6.3/skel/env/java.properties

(6) Gauge其他插件: gauge install screenshot html-report 等

Spec编写语法

参考链接

Spec #

场景  ##

Steps  *

step中的具体实现: zip实现同步遍历多个list, get_column_values_with_name获取表中列数据,如:

* Get segemented and tag word with query "亚投行意向创始成员国确定为57个" using BosonNLP

|space_mode  |oov_level|t2s  |special_char_conv|

|--|-----------|--|-----------|

|0 |3          |0 |0          |

|1 |3          |0 |0          |

|0 |1          |0 |0          |

|0 |3          |1 |0          |

|0 |3          |0 |1          |

step实现如下:

@step("Get segemented and tag word with query <query> using BosonNLP <table>")

def seg_tag(query,table):

query_set = []

query_set.append(query)

for space_mode,oov_level,t2s,special_char_convin zip(table.get_column_values_with_name("space_mode"),table.get_column_values_with_name("oov_level"),table.get_column_values_with_name("t2s"),table.get_column_values_with_name("special_char_conv")):

result = nlp.tag(query_set,space_mode,oov_level,t2s,special_char_conv)

print(result)

Case的执行方式

执行specs文件夹下的specs.spec文件:gauge specs/specs.spec

执行多个文件夹下的所有文件:gauge specs-dir1/ specs-dir2/

执行多个文件夹下的指定文件:gauge specs-dir1/example.spec specs-dir2/example2.spec

执行一个特定的Scenario:gauge specs/example.spec:16<br>数字代表该secnaior所在的行,从0开始

执行多个特定的Scenario:gauge specs-dir1/example.spec:16 specs-dir2/example.spec:18

执行的过程中输出日志:gauge --verbose specs

通过Tags执行

通过单独的Tag执行:gauge --tag admin specs带有admin 的所有的Specification或Scenario都会被执行

通过多个Tag执行:gauge --tag "login,admin" specs只有同时有login和admin Tag的Specification或者Scenario才会被执行

执行含有空格的Tag:gauge --tag "user login" specs

Tag支持与、或、非运算

!TagA: 执行不含有TagA的Specification或Scenario

TagA & !TagB: 执行含有TagA但不含TagB的Specification或Scenario

(TagA & TagB) | TagC: 执行同时含有TagA和TagB或者含有TagC的Specification或Scenario

(TagA | TagB) & TagC: 执行同时含有TagA和TagC或者TagB和TagC的Specification或Scenario

关于tags的执行的几个示例:

!TagA: 执行不含有TagA的Specification或Scenario

TagA & TagB: 执行同时含有TagA和TagB的Specification或Scenario

TagA & !TagB: 执行含有TagA但不含TagB的Specification或Scenario

TagA | TagB: 执行含有TagA或TagB的Specification或Scenario

(TagA & TagB) | TagC: 执行同时含有TagA和TagB或者含有TagC的Specification或Scenario

!(TagA & TagB) | TagC: 执行同时不含有TagA和TagB的或者含有TagC的Specification或Scenario

(TagA | TagB) & TagC: 执行同时含有TagA和TagC或者TagB和TagC的Specification或Scenario

gauge几个不同层级代码组织

Specifications (spec)  : # 开头   可以包含多个测试场景, 可通过 Tags进行标记

Scenario: ## 开头   spec中单一的工作流, 包含一个或多个step, 可通过tags进行标记

Step: * 开头  每个step对应一段代码实现       step可以包含别名alias ,具体实现如:java中使用{} python使用[]@step(["Create a user <user name>", "Create another user <user name>"])

Context Steps(每个场景开始执行前: 数据准备及其他相关资源初始化)

Tear Down Steps(每个场景执行完成后:资源回收及数据恢复)

比较普通的step 

Guage常用插件

gauge install json-report

gauge install xml-report

gauge install flash

gauge install screenshot

gauge install html-report

相关文章

网友评论

    本文标题:基于BDD的Gauge框架摘录

    本文链接:https://www.haomeiwen.com/subject/xebuxhtx.html