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

前言

在上期文章“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路径,如下图。

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第1张图片

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

如何引入数据驱动

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

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第2张图片

Configparser具体操作方法

第一步,新建一个ini文件,例如config.ini,然后编辑session,key,value字段。

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第3张图片

注释一:[]内的字段为“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”。

第二步,为了减少维护成本和精简代码,先将读取配置文件方法封装,如下图:

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第4张图片

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

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第5张图片

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

如何编写简单的报表

自动化报表展示建议大家使用Unitest库(pip install unittest(2.7需要安装  3.6版本自带了Unittest,不需要再次安装)),Airtest自带的report不太好用,关键是可参考的资料有限,扩展性也不如Unitest库好。

其次,在使用Unitest库时,建议大家使用BeautifulReport,不建议大家用HTMLTestRunner,因为HTMLTestRunner多数情况下需要修改内部代码,不太适用。

第一步,导入unitest以及相关库,如下图:

92454a2300c9fbb0ce79f4a628b3c12d.png

第二步,编写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)# 在所有用例执行之前运行的@classmethoddef setUpClass(cls):print('手机浏览器自动化开始')# 在所有用例都执行完之后运行的@classmethoddef 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为报表描述

输出的报告样式如下:

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第6张图片

相关参考资料

① Unittest用例按编写顺序执行:https://www.cnblogs.com/songzhenhua/p/9690198.html

② Unitest生成的报告如何输出为html:

https://blog.csdn.net/guobingjie123/article/details/78860272

以往文章

文章一:Airtest跨平台的UI自动化测试框架(一)

结尾

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

后续文章

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

搜狗测试微信号:Qa_xiaoming

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第7张图片

搜狗测试QQ粉丝群:459645679

airtest自动化测试_Airtest跨平台的UI自动化测试框架(二)_第8张图片

你可能感兴趣的:(airtest自动化测试,ui自动化测试框架,原有ui项目调用qml)