Python + RobotFramework 测试框架分享三(Web项目实践)

发布时间:2024年01月17日

前言

前面已经写过两篇文章介绍该框架,目前又涉及一个路由器Web自动化测试的项目,所以就简单写个Demo分享一下,主要介绍Python + Robotframework实现路由器Web自动化测试。

路由器是新华三的NX30,其实其他路由器也差别不大,应该都可以适用。该文章就是介绍如何用该框架通过UI自动化完成路由器的主要功能测试。

架构介绍

关于架构的介绍在本系列文章的第一篇里做了详细的说明(见文章一的思维导图),目前呢对该框架做了一些改动:

1.由于部分电脑没有外网权限,所以将一些所需的三方库放在PythonLibs文件夹中,这样安装时即使电脑无外网权限也可完整安装此框架

2.将RIDE的启动脚本放置在根目录,这样便于启动

其他部分和该系列第一篇文章基本无异

实现

1.底层代码功能实现

首先在python代码库Libraries中新建一个function.py文件(文件名可自定义),所有路由器相关功能都在此文件中实现。

然后构建一个FunctionKeywords的类,在该类中创建细分功能的函数(关键字)

这里以登录页面作为开始,通过网页找到密码输入栏元素和登录按钮的一些属性

接下来便可以开始构建登录功能的函数(RF中也叫关键字),实现步骤可以看代码注释

	def open_router(self, password, browser='ff'):
		"""
		打开浏览器并登录
		"""
		password = str(password)

		self._sel.open_browser(browser=browser)
		# 访问登录页
		self.go_to_login_page()
		# 向密码输入栏输入密码
		self._sel.input_text('name:psd', password)
		# 点击登录按钮
		self._sel.click_element('name:login')
		
		# 等待页面跳转成功
		self._sel.wait_until_page_contains_element('id:wanzheng_img')
		
		# 在RIDE中输出log信息,便于查看测试进度
		logger.info('Login router success.')

?接下来我们就需要测试 wifi的名称的设置,是否加密,密码等页面功能

路由器设置页面如下:

?接下来构建这个设置页面的函数,注意看注释!

	def set_2g4_ssid_configuration(self, ssid=None, ssidHidden=None, authMode=None, encryProtocol=None, password=None):
		conf = self.get_2g4_ssid_configuration()

		ssid = str(ssid) if ssid is not None else conf.ssid
		ssidHidden = robottypes.is_truthy(ssidHidden) if ssidHidden is not None else conf.ssidHidden
		authMode = Utils.to_enum(authMode, RouterAuthMode) if authMode is not None else conf.authMode
		encryProtocol = Utils.to_enum(encryProtocol, RouterEncryProtocol) if encryProtocol is not None else conf.encryProtocol
		password = str(password) if password is not None else conf.password

		# 访问配置页
		self._sel.go_to(self.get_router_address('/wlan_ap_ssid_config.asp?index=0'))
		# 等待网页加载成功
		self._sel.wait_until_page_contains('无线网络配置', error='AP 2.4g ssid configuration page not found')

		if ssid != conf.ssid:
			# 输入wifi名称
			self._sel.input_text('name:ssid_name', ssid)
		if ssidHidden != conf.ssidHidden:
			# 是否隐藏名称
			self._sel.select_from_list_by_value('name:ssid_broad', str(int(ssidHidden)))
		if authMode != conf.authMode:
			# 加密方式
			self._sel.select_from_list_by_value('name:ssid_enc', str(authMode.value))
		if encryProtocol != conf.encryProtocol:
			self._sel.select_from_list_by_value('name:wpa_key_type', str(encryProtocol.value))
		if password != conf.password:
			# 输入密码
			self._sel.input_text('name:wpa_key', password)

		# 点击确认
		self._sel.click_element('css:input[name="amend"]')

到这里两个功能的函数就完成了, 其他功能也照此样式实现即可。最后将FunctionKeywords类开放给RIDE,供其调用:

2.RIDE中测试用例编写

各个功能的函数封装完成后就可以在RIDR中根据测试需要编辑测试用例了,这里我写了一个简单的示例,包括登录,设置参数,验证参数,关闭路由器,关闭浏览器等步骤

利用此框架的优点在于,你只需要构建底层功能,然后剩下的一切交给RIDE即可,比如开始/暂停/停止/报告等功能都不用自己开发。

运行的结果如下:

输出的测试Log和Report文件存放在Enviroment\Output文件夹中:

总结

综合看来,Python + Robotframework自动化测试框架优点众多,不仅可以用来做APP自动化测试,WEB端自动化测试,也可用来做硬件自动化测试(比如WIFI/蓝牙/杂散)等等。

由于源码涉及多个文件,所以不好直接粘打文章中,有需要的同学可以直接私聊我,基本都在线!

文章来源:https://blog.csdn.net/xgh1951/article/details/135641859
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。