用例标签、挑选用例执行、调试

执行自动化测试的时候,往往我们并不需要执行 全部的 测试用例。

比如:冒烟测试,只需要测试冒烟测试的那些用例。 或者调试自己写的某个用例的自动化,就只需要执行那一个用例。

黑羽robot 可以灵活的挑选要执行的测试用例。

黑羽robot是基于 robotframework 的, 挑选用例执行的机制和 robotframework 完全一致

可以点击这里,下载后续视频中的示例代码

根据名称挑选


点击这里,边看视频讲解,边学习以下内容

我们可以通过 --test 或者 --suite 命令行参数 来指定执行哪些用例或者套件,而且还支持用通配符的方式。

--test testA                # 执行名为 testA 的用例
--test testA --test testB  # 执行名为 testA 和  testB 的用例
--test test*              # 执行名字以 test 开头的用例
--suite 订单管理              # 执行 名为 订单管理 的套件

比如,我们想只测试 药品管理 这个套件

run --suite  药品管理  

比如,我们想只测试 界面 - UI-0101 这个用例

run --test  "界面 - UI-0101"  

因为用例名中有空格,所以必须用双引号包起来。

通常,我们的用例名后面会包含用例的 ID, 这样就可以很方便的根据用例ID,来选择用例了

比如 这样

run --test  *0101  

就可以挑选我们 练习中的 用例名为 界面 - UI-0101 的用例执行


假如,你的测试领导,要求做冒烟测试, 挑选出来的用例编号为以下这些:

UI-0301
UI-0302
UI-0303
UI-1401
UI-1402

我们就可以这样执行

run --test *0301  --test *0302 --test *0303 --test *1401 --test *1402

大家自然会想到,如果要执行的用例太多,比如 1000 个,命令行参数岂非太长了?

这时我们可以使用参数文件,可以把所有的参数都放在参数文件中,比如,创建一个名字为 args 的参数文件,内容如下

--test *0301
--test *0302
--test *0303
--test *1401
--test *1402

一行一个参数

然后, 我们的命令就只需要 run -A args 就可以了

根据标签挑选

黑羽robot 还有一种选择测试用例的方法:根据用例的 标签 来挑选用例

给用例添加标签


点击这里,边看视频讲解,边学习以下内容

我们可以给测试用例打上标签(Tag),这样在运行的时候,可以通过标签指定要运行哪些用例。

标签 就是用例的属性特征描述

测试用例可以有多个标签描述它的属性特征, 比如一个登录测试的用例, 可以有3个标签: 登录功能、冒烟测试、UI测试

黑羽robot可以根据任何一个标签选择执行该用例。 这个后面会讲

给用例添加标签有如下几种方式

  • 套件文件全局变量 force_tags

如果我们在测试用例文件 定义了一个名为 force_tags 的全局变量,格式如下

force_tags = ['登录功能','冒烟测试','UI测试']

那么该文件里面所有测试用例都具有了这些标签。

标签一定要放在列表中,即使只有一个标签


如果我们在测试套件目录初始化文件__st__.py定义了一个这样的 force_tags 全局变量, 那么该目录里面所有测试用例都具有了该tag

  • 测试用例类的 tags 静态属性

如果我们在测试用例类 定义了一个名为 tags 静态属性,格式如下

class c1:
    name = '添加订单 - 00001'
    # 用例标签,可选   
    tags = ['登录功能','冒烟测试','UI测试']

那么本测试用例就具有了这些标签。


根据标签挑选


点击这里,边看视频讲解,边学习以下内容

在执行自动化的时候,我们可以通过命令行参数,指定标签,从而挑选要执行的测试用例

比如:

# 执行包含 标签 '冒烟测试' 的用例. 
--include 冒烟测试  


# 执行不包含标签 '冒烟测试' 的用例.
--exclude 冒烟测试 


# 执行 有冒烟测试、UITest 两个标签的用例
--include 冒烟测试ANDUITest 


# 执行 有 冒烟测试 或者 UITest 标签 的用例
--include 冒烟测试   --include UITest


# 执行标签格式为 A*B 的用例,比如 A5B, AB, A444B
--include A*B    

指定关键测试用例


点击这里,边看视频讲解,边学习以下内容

黑羽robot 执行时,可以指定用例是否是 关键(critical) 测试用例。

如果本次测试中有关键测试用例没有通过,整个测试就被视为测试不通过。 即使100个用例中只有1个关键用例没有通过,

反之,所有关键用例都通过,整个测试就视为通过。 即使100个中有99个非关键用例没有通过,只有1个关键通过。


黑羽robot 执行测试时,如果没有命令行参数特别指定,每个测试用例都被视为关键测试用例。

我们可以修改下面的的用例,故意产生错误

class c1:
    name = '订单管理 - UI-1401'
    tags = 'order1'

    def teststeps(self):
        STEP(1,'添加订单')
        STEP(2,'检查结果')
        # 故意产生错误
        raise Exception()

当我们运行 黑羽robot 发现 有用例不通过, 然后再看Report, 发现测试报告底色是红色的。 表示整个测试是失败的。

因为缺省都是critical, 所以用红色表示测试不通过

我们可以通过命令参数 --critical--noncritical 后面加 标签名称 来指定哪些用例 是 关键用例 或者 非关键用例。

比如:

run --critical first

指定 只有具有 first 标签的用例才是关键用例 其它都不是


run --noncritical first

指定 具有 first 标签的用例是非关键用例,其他用例都是关键用例。

run --critical basic*  --critical important*

指定 具有 以 basic 开头 或者 important开头 的标签 的用例都是关键用例,其他用例都不是关键用例。



如果我们执行时,指定这个用例为非关键用例,如下所示

run --nocritical order1

然后再看Report, 发现测试报告底色是绿色的。因为这个用例都变成非关键用例了,即使失败,也认为测试结果是通过的。

调试


点击这里,边看视频讲解,边学习以下内容

黑羽robot运行后,如果发现 程序出现了问题,怎么去 debug 呢?

debug 日志级别

在命令行加上 -L debug 参数,使得日志信息更加详细

run -L debug

如果有错误,会打印详细的错误信息,方便定位。

pycharm断点调试

黑羽robot执行自动化用例的时候,其实就是 执行类似如下的命令

python -m robot.run cases

上面意思就是执行robot包里面的run.py文件

既然本质上就是一个python程序,当然我们可以在pycharm中执行,以前设置断点的方法依然可以使用

但是我们需要从pycharm里面运行,就需要配置运行参数,点击配置

image


然后,如下图所示,进行配置。注意下图方框里面要点击箭头,从 Script path 改为 Module name

image

这样设置,执行的时候,就等于执行了下面的命令

cd E:\tmp\autotest_bysms
python.exe  -m robot.run  cases

然后再点击debug的图标,就可以进行断点调试了。


扫码分享给朋友,一起学更有动力哦




课后练习

题目1

使用 hyrobot,完成用例文档中 剩余用例 的自动化。

根据用例分类, 给用例加上 合适的标签, 然后练习

  • 通过用例名 和 用例标签挑选用例执行

  • 出现问题,根据教程中讲解的方法进行 调试,解决问题。



参考答案

VIP 学员联系 老师获取 参考答案 和视频讲解