美文网首页自动化
基于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