前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Airtest跨平台的UI自动化测试框架(二)

Airtest跨平台的UI自动化测试框架(二)

作者头像
用户5521279
发布2020-08-04 11:37:14
1.1K0
发布2020-08-04 11:37:14
举报
文章被收录于专栏:搜狗测试搜狗测试

前言

在上期文章“Airtest跨平台的UI自动化测试框架(一)”中简单的介绍了Airtest的一些用法和注意事项,今天小编介绍一下如何将Airtest测试框架扩展到airtest + python + unitest +Configparser框架。这样做的目的是为了最大限度降低后期维护成本。

如何引入python库

单纯使用Airtest是无法引用多数的python第三方库,因此我们需要将Airtest和python结合起来,具体操作方法如下: 第一步,通过python的命令安装Airtest的相关库,airtest和 pocoui,参考命令:pip install airtest和pip install pocoui; 第二步,AirtestIDE配置python路径,如下图。

这样一来,python的库就可以尽情使用了......

如何引入数据驱动

数据驱动指的是将公共的,动态的数据集中化,也称“参数化”。通常用到的是全局变量和python参数配置库ConfigParser(pip install configparser),下图执行完毕如果没有报错,Configparser库就安装成功了。

Configparser具体操作方法 第一步,新建一个ini文件,例如config.ini,然后编辑session,key,value字段。

注释一:[]内的字段为“session”,大小写均可,例如上图中的[APPINFO]和[WEBINFO];key和value值为参数名以及对应的参数值,成对出现,例如上图中【InputText =11111】 注释二:参数配置库ConfigParser的常用方法。 ① read(filename) 直接读取ini文件内容。 ② sections() 得到所有的section,并以列表的形式返回。 ③ options(section) 得到该section的所有option。 ④ items(section) 得到该section的所有键值对。 ⑤ get(section,option) 得到section中option的值,返回为string类型。 ⑦ getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。 ⑧ add_section(section) 添加一个新的section。 ⑨ set( section,option,value) 对section中的option进行设置,需要调用write将内容写入配置文件。 注释三:如果读取的value值是中文,一定进行编码格式转化,encoding="utf-8-sig”。 第二步,为了减少维护成本和精简代码,先将读取配置文件方法封装,如下图:

第三步,传参调用,如下图:

注释一:建议大家采用全局变量,这样类中的其他方法也可以调用,同样可以减少维护成本和精简代码。

如何编写简单的报表

自动化报表展示建议大家使用Unitest库(pip install unittest(2.7需要安装 3.6版本自带了Unittest,不需要再次安装)),Airtest自带的report不太好用,关键是可参考的资料有限,扩展性也不如Unitest库好。 其次,在使用Unitest库时,建议大家使用BeautifulReport,不建议大家用HTMLTestRunner,因为HTMLTestRunner多数情况下需要修改内部代码,不太适用。 第一步,导入unitest以及相关库,如下图:

第二步,编写unitest报告类,各项注意事项已经注释,大家可以参考,如下代码: import unittest # 单元测试模块from BeautifulReport import BeautifulReport as bf # 导入BeautifulReport模块,这个模块也是生成报告的模块,但是比HTMLTestRunner模板好看class Main(unittest.TestCase): # 每个用例运行之前运行的 def setUp(self): print('手机浏览器自动化环境预置') baseTest.bowserOfTearDown(packageName) # 每个用例运行之后运行的 def tearDown(self): print('手机浏览器自动化环境恢复') baseTest.bowserOfTearDown(packageName) # 在所有用例执行之前运行的 @classmethod def setUpClass(cls): print('手机浏览器自动化开始') # 在所有用例都执行完之后运行的 @classmethod def tearDownClass(cls): print('手机浏览器自动化结束') # 函数名要以test开头,否则不会被执行 def test01(self): # 用例描述,在函数下,用三个单引号里面写用例描述 print("恶意网站拦截模块") '''命中semob_malicious_promotion_blacklist配置文件内的域名,访问该域名的网址,显示特意网站提示窗''' x = MaliciousInterceptTest.testCase_01() self.assertTrue(x) def test02(self): '''打开命中恶意网站拦截的网页之后,此时点击拦截的继续访问按钮,此时可以继续打开原有网页(也有可能打开404页面,因为这类网站多为色情或者不正规网站,被封的可能性很高)''' x = MaliciousInterceptTest.testCase_02() self.assertTrue(x) def test03(self): '''打开命中恶意网站拦截的网页之后,此时点击拦截的继续访问按钮,打开原有网页之后,点击back键可以退出原网页''' x = MaliciousInterceptTest.testCase_03() self.assertTrue(x) suite = unittest.TestSuite() # 定义一个测试集合suite.addTest(unittest.makeSuite(Main)) # 把写的用例加进来(将运行类)加进来run =bf(suite) # 实例化BeautifulReport模块run.report(filename='BrowserAutoTest', description='手机浏览器自动化测试报告') # filename为报表名称;description为报表描述 输出的报告样式如下:

相关参考资料

① Unittest用例按编写顺序执行:https://www.cnblogs.com/songzhenhua/p/9690198.html ② Unitest生成的报告如何输出为html: https://blog.csdn.net/guobingjie123/article/details/78860272

结尾

以上是小编最近在使用Airtest期间的总结,初步满足了项目需要,后续随着业务需求的增加,小编会继续总结Airtest的用法,欢迎大家批评指正。

后续文章

“Airtest跨平台的UI自动化测试之Unitest丰富报告”正在整理中,敬请期待……

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 搜狗测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档