自动化测试框架(从robotframework到hyrobot(黑羽robot) python语言)

自动化测试框架- hyrobot

  • 欢迎使用 黑羽robot 自动化框架
    • 作用
        • Web自动化
        • 性能测试
    • 黑羽Robot(HyRobot)
      • 安装
      • 项目
    • 用例和套件
      • 用例标签、挑选用例执行、调试
        • 根据名称挑选
        • 给用例添加标签
    • debug 日志级别
    • pycharm 端点调试

欢迎使用 黑羽robot 自动化框架

网址:www.python3.vip

作用

  • 为什么需要robotframework

    挑选用例执行
    测试报告
    初始化清除

Web自动化

  • Selenium原理与安装
  • 选择元素的基本方法
  • 操控元素的基本方法
  • CSS选择器
  • frame切换/ 窗口切换
  • 选择框
  • 实战技巧
  • Xpath选择器

性能测试

  • 白月黑羽性能测试工具
  • 使用场景

普通实现

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()

黑羽Robot(HyRobot)

  • 为什么需要hyrobot

    自动化用例文件目录
    挑选用例执行
    测试报告
    初始化清除

  • 基于Robotframework

    直观的用例目录文件结构
    良好的初始化清除机制
    灵活挑选用例执行
    漂亮的测试日志和报告
    使用广泛

  • HyRobot特色

    纯Python写用例
    中文汉化

安装

  • Python3.6 以上
  • 必须先安装RobotFramework
  • pip install robotframework

项目

autotest_lianxi

cases

web界面操作

管理员操作

st.py
客户管理.py
药品管理.py

销售操作

订单管理.py

st.py

接口测试
cfg
hyrobot
init.py
common.py
run.py

lib

init.py
webui.py

.gitignore
args
rf.bat
run,bat

注明: _st_.py : setup && teardown

  • st.py(管理员操作)
from hyrobot.common import *
from lib.webui import *

# force_tage = ['登录功能', '冒烟测试', 'UI测试']
force_tage = ['mgrop']

def suite_setup():
	mgr_login(get_global_webdriver())
  • 客户管理.py
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()
  • 药品管理.py
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
  • 订单管理.py
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
  • st.py(web界面操作)
  • init.py(hyrobot)
  • common.py
  • run.py
  • init_.py(lib)
  • webui.py
  • args

用例和套件

cases 目录下面的每个目录和py文件都对应一个测试套件
所谓测试套件,就是测试用例的结合
我们把功能相关的测试用例组合起来放在一起,成为某个测试套件。

  • 测试套件可以是 目录 也可以是 文件
  • 测试用例代码 是在测试套件py文件中的
  • 一个套件文件 可以存放多个用例(class)
  • 测试套件目录可以包含子套件目录 和 子套件文件

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

执行自动化测试的时候,往往我们并不需要执行所有的测试用例。
比如:冒烟测试,只需要测试冒烟测试的哪些用例。或者调试自己写的某个用例的自动化,就只需要执行哪一个用例。
黑羽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_tags
    如果我们在测试用例文件,定义了一个名为 force_tags的全局变量,格式如下
force_tag = ['登录功能', '冒烟测试', 'UI测试']

注:必须使用列表格式 -- []
那么该文件里面所有测试用例都具有了这些标签。
标签一定要放在列表中,即使只有一个标签。

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

  • 测试用例的tags 静态属性
    如果我们在测试用例定一个名为tags静态属性,格式如下
class c1:
	name = '添加订单 - 0001'
	# 用例标签,可选
	tags = ['登录功能', '冒烟测试', 'UI测试']
  • 运行选择标签
    在执行自动化的时候,我们可以通过命令行参数,指定标签,从而挑选要执行的测试用例
    如:
# 执行包含 标签‘冒烟测试’的用例
--include 冒烟测试

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

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

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

# 执行标签格式为 A*B 的用例。如 A5B,AB,AAB
--include A*B
  • 指定关键测试用例
    黑羽robot 执行时,可以指定用例是否是关键(critical)测试用例
    如果本次测试中有关键测试用例没有通过,整个测试就被视为测试不通过。即使100个用例中只有一个关键用例没有通过;反之,所有关键用例都通过,整个测试就视为通过,即使100个中有99个非关键用例没有通过,只有一个关键通过。
    黑羽robot执行测试时,如果没有命令行参数特别指定,每个测试用例都被视为关键测试用例。

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

debug 日志级别

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

run -L debug

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

pycharm 端点调试

我们查看依稀bobot.bat就知道,其实就是执行

python -m robot.run cases

其中如果使用-m参数,说明后面的参数指定的是以模块的写法(就像import倒入时候的写法),并且在模块搜索露肩里面可以找到他。找到后,就和执行脚本是一样。

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

既然本质上就是一个python程序,当然我们可以在pycharm中执行,以前设置断言端点的方法依然可以使用。
自动化测试框架(从robotframework到hyrobot(黑羽robot) python语言)_第1张图片

你可能感兴趣的:(软件测试,框架,随手笔记,软件测试)