网址:www.python3.vip
挑选用例执行
测试报告
初始化清除
普通实现
from selenium import webdriver
wd = webdriver.Chrome()
wd.implicitly_wait(5)
wd.get('http://')
# 根据ID选择元素,并且输入字符串
wd.find_element_by_id('username').send_keys('')
wd.find_element_by_id('password').send_keys('8888')
# 根据标签名查找元素
wd.find_element_by_tag_name('button').click()
# 先找到上层节点,缩小查找范围
sidebarMenu = wd.find_element_by_class_name('sidebar-menu')
# 再找到内部元素
elements = sidebarMenu.find_elements_by_tag_name('span')
menuTitles = []
for ele in elements:
print(ele.text)
menuTitles.append(ele.text)
print('**检查点** 侧边栏菜单是否正确', end='')
if menuTitles[:3] == ['客户', '药品', '订单']:
print('通过')
else:
print('不通过')
exit(1)
wd.quit()
为什么需要hyrobot
自动化用例文件目录
挑选用例执行
测试报告
初始化清除
基于Robotframework
直观的用例目录文件结构
良好的初始化清除机制
灵活挑选用例执行
漂亮的测试日志和报告
使用广泛
HyRobot特色
纯Python写用例
中文汉化
pip install robotframework
autotest_lianxi
cases
web界面操作
管理员操作
st.py
客户管理.py
药品管理.py销售操作
订单管理.py
st.py
接口测试
cfg
hyrobot
init.py
common.py
run.pylib
init.py
webui.py.gitignore
args
rf.bat
run,bat
注明: _st_.py : setup && teardown
from hyrobot.common import *
from lib.webui import *
# force_tage = ['登录功能', '冒烟测试', 'UI测试']
force_tage = ['mgrop']
def suite_setup():
mgr_login(get_global_webdriver())
from hyrobot.common import *
from lib.webui import *
from time import sleep
force_tage = ['登录功能', '冒烟测试', 'UI测试']
class c1:
# 测试用例名字
name = '界面 - UI-0101'
# 用标签,可选
tags = ['c1', 'first']
# 测试用例步骤(方法名不能修改)
def teststeps(self):
wd = get_global_webdriver()
STEP(1, '获取左侧菜单信息')
# 先找到上层节点,缩小查找范围
sidebarMenu = wd.find_element_by_class_name('sidebar-menu')
# 再找到内部元素
elements = sidebarMenu.find_elements_by_tag_name('span')
menuTiles = []
for ele in elements:
INFO(ele.text)
menuTitles.append(ele.text)
STEP(2, '检查是否正确')
CHECK_POINT("侧边栏菜单是否正确",
menuTitles[:3] == ['客户', '药品', '订单'])
class c2:
name = '客户管理 - UI-0102'
# 测试用例步骤
def teststeps(self):
wd = get_global_webdriver()
from hyrobot.common import *
from lib.webui import *
from time import sleep
# force_tage = ['登录功能', '冒烟测试', 'UI测试']
force_tage = ['药品管理']
class c1:
# 测试用例名字
name = '界面 - UI-0301'
# 测试用例步骤
def teststeps(self):
pass
class c2:
# 测试用例名字
name = '界面 - UI-0302'
# 测试用例步骤
def teststeps(self):
pass
from hyrobot.common import *
from lib.webui import *
from time import sleep
force_tags = ['订单管理']
class c1:
# 测试用例名字
name = '订单管理 - UI-1401'
# 测试用例步骤
def teststeps(self):
pass
class c2:
# 测试用例名字
name = '订单管理 - UI-1402'
# 测试用例步骤
def teststeps(self):
pass
cases
目录下面的每个目录和py文件都对应一个测试套件
所谓测试套件,就是测试用例的结合
。
我们把功能相关的测试用例组合起来放在一起,成为某个测试套件。
执行自动化测试的时候,往往我们并不需要执行所有的测试用例。
比如:冒烟测试,只需要测试冒烟测试的哪些用例。或者调试自己写的某个用例的自动化,就只需要执行哪一个用例。
黑羽robot可以灵活的挑选要执行的测试用例。
黑羽robot是基于robotframework 的,挑选用例执行的机制和robotframework完全一致。
我们可以通过 --test
或者 --suite
命令行参数来指定执行哪些用例或者套件,而且还支持用通配符的方式
--test testA # 执行名为 testA 的用例
--test testA --test testB # 执行名为 testA 和 testB 的用例
--test test* # 执行名以 test开头的用例
--suite 订单管理 # 执行名为【订单管理】的套件
比如,我们只想测试 药品管理
这个套件
run --suit 药品管理
比如。我们想只测试 界面 - UI-0101
这个用例
run --test “界面 - UI-0101”
因为用例名中有空格,所以必须用双引号包起来。
通常,我们的用例名后面会包含用例的ID,这样就可以很方便的根据用例ID来选择用例了,如
run --test *0101
就可以挑选我们练习中的 用例名为界面 - UI-0101
的用例执行
假如,要求做冒烟测试,挑选出来的用例编号很多,我们就可以使用参数文件,可以把所有的参数都放在参数文件中(args),就可以直接使用 -A args
run -A args
我们可以给测试用例打上标签(Tag),这样在运行的时候,可以通过标签指定要运行哪些用例。
标签就是用例的熟悉特征描述
测试用例可以有多个标签描述它的熟悉特征,比如一个登录测试的用例,可以有3个标签:登录功能、冒烟测试、UI测试
黑羽robot可以根据任何一个标签选择执行该用例。
给用例标签加标签的几种方式
force_tag = ['登录功能', '冒烟测试', 'UI测试']
注:必须使用列表格式 -- []
那么该文件里面所有测试用例都具有了这些标签。
标签一定要放在列表中,即使只有一个标签。
如果我们在测试套件目录初始化文件_st_.py定义了一个这样的force_tags全局变量,那么该目录里面所有测试用例都具有了该tag
class c1:
name = '添加订单 - 0001'
# 用例标签,可选
tags = ['登录功能', '冒烟测试', 'UI测试']
# 执行包含 标签‘冒烟测试’的用例
--include 冒烟测试
# 执行不包含标签‘冒烟测试’的用例
--exclude 冒烟测试
# 执行 有冒烟测试、UITest 两个标签的用例
--include 冒烟测试ANDUITest
# 执行 有 冒烟测试 或者 UITest 标签 的用例
--include 冒烟测试 --include UITest
# 执行标签格式为 A*B 的用例。如 A5B,AB,AAB
--include A*B
关键(critical)
测试用例黑羽robot运行后,如果发现程序出现了问题,怎么去debug呢?
在命令行加上 -L debug
参数,使得日志信息更加详细
run -L debug
如果有错误,会打印详细的错误信息,方便定位。
我们查看依稀bobot.bat就知道,其实就是执行
python -m robot.run cases
其中如果使用-m参数,说明后面的参数指定的是以模块的写法(就像import倒入时候的写法),并且在模块搜索露肩里面可以找到他。找到后,就和执行脚本是一样。
上面意思就是执行robot包里面的run.py文件